# -*- ruby -*-


task :default => :calculator

exeext = (RUBY_PLATFORM =~ /cygwin/) ? '.exe' : ''


lib = '../libhouken.a'
houken = '../houken/houken' + exeext

peg = 'calc.peg'
tab_cpp = 'calc.tab.cpp'
srcs = ['calc.cpp', '../etc/printSyntaxTree.cpp', tab_cpp]
bin = 'calc' + exeext


task :calculator => bin

file bin => srcs + [lib] do
  files = srcs + [lib]
  sh 'g++', '-Wall', '-g', '-I../src', '-o', bin, *files
end


file tab_cpp => [peg, houken] do
  sh houken, peg
end

task :tab do
  sh houken, peg
end
  

task :lib => lib

file lib do
  sh '(cd ..; rake)'
end


file houken => :houken

task :houken do
  sh '(cd ../houken; rake)'
end


task :clean do
  FileUtils.rm_f(bin, :verbose => true)
  FileUtils.rm_f(bin + '.stackdump', :verbose => true)
  FileUtils.rm_f(Dir['calc.tab.*'], :verbose => true)
end

task :allclean => :clean do
  sh '(cd ..; rake clean)'
end
