Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

executable file 103 lines (88 sloc) 4.015 kb
require File.dirname(__FILE__) + '/ragel_task'
BYPASS_NATIVE_IMPL = true
require 'gherkin/i18n'
CLEAN.include [
'pkg', 'tmp',
'**/*.{o,bundle,jar,so,obj,pdb,lib,def,exp,log,rbc}', 'ext',
'java/target',
'ragel/i18n/*.rl',
'lib/gherkin/rb_lexer/*.rb',
'lib/*.dll',
'ext/**/*.c',
'java/src/main/java/gherkin/lexer/i18n/*.java',
'java/src/main/resources/gherkin/*.properties',
]
desc "Compile the Java extensions"
task :jar => 'lib/gherkin.jar'
file 'lib/gherkin.jar' => Dir['java/src/main/java/**/*.java'] do
sh("mvn -f java/pom.xml package")
end
rl_langs = ENV['RL_LANGS'] ? ENV['RL_LANGS'].split(',') : []
langs = Gherkin::I18n.all.select { |lang| rl_langs.empty? || rl_langs.include?(lang.iso_code) }
# http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6457127
file 'lib/gherkin.jar' => "java/src/main/resources/gherkin/I18nKeywords_in.properties"
file "java/src/main/resources/gherkin/I18nKeywords_in.properties" => "java/src/main/resources/gherkin/I18nKeywords_id.properties" do
cp "java/src/main/resources/gherkin/I18nKeywords_id.properties", "java/src/main/resources/gherkin/I18nKeywords_in.properties"
end
# http://forums.sun.com/thread.jspa?threadID=5335461
file 'lib/gherkin.jar' => "java/src/main/resources/gherkin/I18nKeywords_iw.properties"
file "java/src/main/resources/gherkin/I18nKeywords_iw.properties" => "java/src/main/resources/gherkin/I18nKeywords_he.properties" do
cp "java/src/main/resources/gherkin/I18nKeywords_he.properties", "java/src/main/resources/gherkin/I18nKeywords_iw.properties"
end
langs.each do |i18n|
java = RagelTask.new('java', i18n)
rb = RagelTask.new('rb', i18n)
lang_country = i18n.iso_code.split(/-/)
suffix = lang_country.length == 1 ? lang_country[0] : "#{lang_country[0]}_#{lang_country[1].upcase}"
java_properties = "java/src/main/resources/gherkin/I18nKeywords_#{suffix}.properties"
file java_properties => 'lib/gherkin/i18n.yml' do
File.open(java_properties, 'wb') do |io|
io.puts("# Generated file. Do not edit.")
(Gherkin::I18n::KEYWORD_KEYS + %w{name native}).each do |key|
value = Gherkin::I18n.unicode_escape(i18n.keywords(key).join("|"))
io.puts("#{key}:#{value}")
end
end
end
file 'lib/gherkin.jar' => [java.target, rb.target, java_properties]
begin
if !defined?(JRUBY_VERSION)
require 'rake/extensiontask'
c = RagelTask.new('c', i18n)
extconf = "ext/gherkin_lexer_#{i18n.underscored_iso_code}/extconf.rb"
file extconf 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 -Wall -Werror' if CONFIG['CC'] =~ /gcc/
dir_config("gherkin_lexer_#{i18n.underscored_iso_code}")
have_library("c", "main")
create_makefile("gherkin_lexer_#{i18n.underscored_iso_code}")
EOF
end
end
Rake::ExtensionTask.new("gherkin_lexer_#{i18n.underscored_iso_code}") do |ext|
if ENV['RUBY_CC_VERSION']
ext.cross_compile = true
ext.cross_platform = 'x86-mingw32'
end
end
# The way tasks are defined with compile:xxx (but without namespace) in rake-compiler forces us
# to use these hacks for setting up dependencies. Ugly!
Rake::Task["compile:gherkin_lexer_#{i18n.underscored_iso_code}"].prerequisites.unshift(extconf)
Rake::Task["compile:gherkin_lexer_#{i18n.underscored_iso_code}"].prerequisites.unshift(c.target)
Rake::Task["compile:gherkin_lexer_#{i18n.underscored_iso_code}"].prerequisites.unshift(rb.target)
Rake::Task["compile"].prerequisites.unshift(extconf)
Rake::Task["compile"].prerequisites.unshift(c.target)
Rake::Task["compile"].prerequisites.unshift(rb.target)
end
rescue LoadError
unless defined?($c_warned)
warn "WARNING: Rake::ExtensionTask not installed. Skipping C compilation."
$c_warned = true
task :compile # no-op
end
end
end
Jump to Line
Something went wrong with that request. Please try again.