diff options
| author | Yuichiro MASUI <[email protected]> | 2012-12-16 01:56:03 +0900 |
|---|---|---|
| committer | Yuichiro MASUI <[email protected]> | 2012-12-16 01:56:03 +0900 |
| commit | 06d242ae430ad37fd88fe6490980121ee26a1283 (patch) | |
| tree | b9326ec83c57de85381b73705f5cd55deaecc4f3 /Rakefile | |
| parent | f2d3c4d2f7361cbd5e246f78630cca919e342673 (diff) | |
| download | mruby-06d242ae430ad37fd88fe6490980121ee26a1283.tar.gz mruby-06d242ae430ad37fd88fe6490980121ee26a1283.zip | |
Moved some building script from GNU make to Ruby script
Added minirake what's Rake subset
Diffstat (limited to 'Rakefile')
| -rw-r--r-- | Rakefile | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/Rakefile b/Rakefile new file mode 100644 index 000000000..ba24cdef9 --- /dev/null +++ b/Rakefile @@ -0,0 +1,101 @@ +# Build description. +# basic build file for mruby + +# compiler, linker (gcc), archiver, parser generator +CC = ENV['CC'] || 'gcc' +LL = ENV['LL'] || 'gcc' +AR = ENV['AR'] || 'ar' +YACC = ENV['YACC'] || 'bison' +MAKE = ENV['MAKE'] || 'make' + +# mruby source root path +MRUBY_ROOT = ENV['MRUBY_ROOT'] || File.expand_path(File.dirname(__FILE__)) + +# by default GEMs are deactivated +ENABLE_GEMS = false + +# the default file which contains the active GEMs +ACTIVE_GEMS = File.join(File.dirname(__FILE__), 'mrbgems', 'GEMS.active') + +# default compile option +COMPILE_MODE = :debug + + +############################## +# compile flags + +case COMPILE_MODE.to_s +when 'debug' + CFLAGS = ['-g', '-O3'] +when 'release' + CFLAGS = ['-O3'] +when 'small' + CFLAGS = ['-Os'] +else + CFLAGS = [ENV['CFLAGS']] +end +LDFLAGS = [ENV['LDFLAGS']] + +CFLAGS << "-Wall" << "-Werror-implicit-function-declaration" << "-I#{MRUBY_ROOT}/include" +if ENV['OS'] == 'Windows_NT' + MAKE_FLAGS = "--no-print-directory CC=#{CC} LL=#{LL} CFLAGS='#{CFLAGS.join(' ')}' LDFLAGS='#{LDFLAGS.join(' ')}' ENABLE_GEMS='#{ENABLE_GEMS}' MRUBY_ROOT='#{MRUBY_ROOT}'" +else + MAKE_FLAGS = "--no-print-directory CC='#{CC}' LL='#{LL}' CFLAGS='#{CFLAGS.join(' ')}' LDFLAGS='#{LDFLAGS.join(' ')}' ENABLE_GEMS='#{ENABLE_GEMS}' MRUBY_ROOT='#{MRUBY_ROOT}'" +end + + + +############################## +# internal variables + +CP = ENV['CP'] ||= 'cp' +RM_F = ENV['RM_F'] ||= 'rm -f' +CAT = ENV['CAT'] ||= 'cat' + + +############################## +# generic build targets, rules +if ENABLE_GEMS + require './mrbgems/build_tasks' +end + +task :default => :all + +desc "build all targets, install (locally) in-repo" +task :all do + sh "#{MAKE} -C src #{MAKE_FLAGS}" + sh "#{MAKE} -C mrblib #{MAKE_FLAGS}" + if ENABLE_GEMS + puts "-- MAKE mrbgems --" + Rake::Task['mrbgems_all'].invoke + end + sh "#{MAKE} -C tools/mruby #{MAKE_FLAGS}" + sh "#{MAKE} -C tools/mirb #{MAKE_FLAGS}" +end + +desc "sh all mruby tests" +task :test => [:all] do + sh "#{MAKE} -C test #{MAKE_FLAGS}" +end + +desc "clean all built and in-repo installed artifacts" +task :clean do + sh "#{MAKE} clean -C src #{MAKE_FLAGS}" + sh "#{MAKE} clean -C mrblib #{MAKE_FLAGS}" + if ENABLE_GEMS + puts "-- MAKE mrbgems --" + Rake::Task['mrbgems_clean'].invoke + end + sh "#{MAKE} clean -C tools/mruby #{MAKE_FLAGS}" + sh "#{MAKE} clean -C tools/mirb #{MAKE_FLAGS}" +end + +desc "show build config summary" +task :showconfig do + puts " CC = #{CC}" + puts " LL = #{LL}" + puts " MAKE = #{MAKE}" + puts "" + puts " CFLAGS = #{CFLAGS.join(' ')}" + puts " LDFLAGS = #{LDFLAGS.join(' ')}" +end |
