mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
112 lines
2.9 KiB
Ruby
112 lines
2.9 KiB
Ruby
# 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 = ENV['ENABLE_GEMS'] == 'true'
|
|
|
|
# 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 'release'
|
|
CFLAGS = ['-O3']
|
|
when 'small'
|
|
CFLAGS = ['-Os']
|
|
else # including 'debug'
|
|
e = ENV['CFLAGS']
|
|
CFLAGS = if e then [e] else ['-g', '-O3'] end
|
|
end
|
|
LDFLAGS = [ENV['LDFLAGS']]
|
|
LIBS = [ENV['LIBS'] || '-lm']
|
|
|
|
if !ENABLE_GEMS
|
|
CFLAGS << "-DDISABLE_GEMS"
|
|
end
|
|
|
|
CFLAGS << "-Wall" << "-Werror-implicit-function-declaration" << "-I#{MRUBY_ROOT}/include"
|
|
if ENV['OS'] == 'Windows_NT'
|
|
MAKE_FLAGS = "--no-print-directory CC=#{CC} LL=#{LL} AR=#{AR} YACC=#{YACC} CFLAGS=\"#{CFLAGS.join(' ')}\" LDFLAGS=\"#{LDFLAGS.join(' ')}\" LIBS=\"#{LIBS.join(' ')}\" ENABLE_GEMS=\"#{ENABLE_GEMS}\" MRUBY_ROOT=\"#{MRUBY_ROOT}\""
|
|
else
|
|
MAKE_FLAGS = "--no-print-directory CC='#{CC}' LL='#{LL}' AR='#{AR}' YACC='#{YACC}' CFLAGS='#{CFLAGS.join(' ')}' LDFLAGS='#{LDFLAGS.join(' ')}' LIBS='#{LIBS.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}"
|
|
sh "#{MAKE} clean -C test #{MAKE_FLAGS}"
|
|
end
|
|
|
|
desc "show build config summary"
|
|
task :showconfig do
|
|
puts " CC = #{CC}"
|
|
puts " LL = #{LL}"
|
|
puts " AR = #{AR}"
|
|
puts " YACC = #{YACC}"
|
|
puts " MAKE = #{MAKE}"
|
|
puts ""
|
|
puts " CFLAGS = #{CFLAGS.join(' ')}"
|
|
puts " LDFLAGS = #{LDFLAGS.join(' ')}"
|
|
puts " LIBS = #{LIBS.join(' ')}"
|
|
puts ""
|
|
puts " ENABLE_GEMS = #{ENABLE_GEMS}"
|
|
end
|