summaryrefslogtreecommitdiffhomepage
path: root/Rakefile
diff options
context:
space:
mode:
authorYuichiro MASUI <[email protected]>2012-12-16 01:56:03 +0900
committerYuichiro MASUI <[email protected]>2012-12-16 01:56:03 +0900
commit06d242ae430ad37fd88fe6490980121ee26a1283 (patch)
treeb9326ec83c57de85381b73705f5cd55deaecc4f3 /Rakefile
parentf2d3c4d2f7361cbd5e246f78630cca919e342673 (diff)
downloadmruby-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--Rakefile101
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