# Rakefile inspired by tasks/compile.rake
# modified to jsut generate .rb and .c from ragel
# and skip compilation of the .c files
# Last-modified: 2013-08-12

require 'rake/clean'
require File.expand_path(File.dirname(__FILE__) + '/../tasks/ragel_task')
BYPASS_NATIVE_IMPL = true
require File.expand_path(File.dirname(__FILE__) + '/../lib/gherkin/i18n')

CLEAN.include [
  'pkg', 'tmp',
  '**/*.{o,bundle,jar,so,obj,pdb,lib,def,exp,log,rbc}', 'ext',
  'java/target',
  'lib/*.dll',
  'ext/**/*.c',
  'doc'
]

langs = Gherkin::I18n.all

desc "generate files"
task :generate

langs.each do |i18n|
  rb = RagelTask.new('rb', i18n)
  c = RagelTask.new('c', i18n)

  lexer_dir = "ext/gherkin_lexer_#{i18n.underscored_iso_code}"
  extconf = lexer_dir + "/extconf.rb"

  directory lexer_dir

  file extconf => lexer_dir do
    FileUtils.mkdir(File.dirname(extconf)) unless File.directory?(File.dirname(extconf))
    File.open(extconf, "w") do |io|
      io.write(<<-EOF)
require 'mkmf'
CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
$CFLAGS << ' -O0' if CONFIG['CC'] =~ /gcc|clang/
dir_config("gherkin_lexer_#{i18n.underscored_iso_code}")
have_library("c", "main")
create_makefile("gherkin_lexer_#{i18n.underscored_iso_code}")
EOF
    end
  end
    
    desc "generate files for #{i18n.underscored_iso_code}"
    task :"gherkin_lexer_#{i18n.underscored_iso_code}" => [extconf, rb.target, c.target]
    
    task :generate => [:"gherkin_lexer_#{i18n.underscored_iso_code}"]
end
