require 'rake'
windows = false processor, platform, *rest = RUBY_PLATFORM.split(“-”) windows = true if platform =~ /mswin32/ or platform =~ /mingw32/
if windows
MAKE = 'mingw32-make' SLASH = '\' COPY = 'copy' DEL = 'del'
else
MAKE = 'make' SLASH = '/' COPY = 'cp' DEL = 'rm'
end
def warn_version
puts 'Warning: VERSION not specified' unless ENV['VERSION']
end
def set_version
if ENV['VERSION'] File.open('lib/qtbindings_version.rb', 'w') do |file| file.write("QTBINDINGS_VERSION = '#{ENV['VERSION']}'\n") file.write("QTBINDINGS_RELEASE_DATE = '#{Time.now}'\n") end File.open('qtlib/qtbindings_qt_version.rb', 'w') do |file| file.write("QTBINDINGS_QT_VERSION = '#{ENV['VERSION']}'\n") file.write("QTBINDINGS_QT_RELEASE_DATE = '#{Time.now}'\n") end end
end
def clear_version
if ENV['VERSION'] File.open('lib/qtbindings_version.rb', 'w') do |file| file.write("QTBINDINGS_VERSION = '0.0.0.0'\n") file.write("QTBINDINGS_RELEASE_DATE = ''\n") end File.open('qtlib/qtbindings_qt_version.rb', 'w') do |file| file.write("QTBINDINGS_QT_VERSION = '0.0.0.0'\n") file.write("QTBINDINGS_QT_RELEASE_DATE = ''\n") end end
end
task :build_examples do
# Go into the examples directory and look for all the makefiles and build them Dir['examples /makefile'].each do |file| if windows system("cd #{File.dirname(file).gsub('/', '\\')} && #{MAKE}") else system("cd #{File.dirname(file)} && #{MAKE}") end end
end
task :examples => [:build_examples] do
system('cd examples && ruby run_all.rb')
end
task :default => [:all]
task :extconf do
system('ruby extconf.rb')
end
# All calls 'make clean' and 'make build' task :all => [:extconf] do
system("#{MAKE} all")
end
task :clean => [:extconf] do
system("#{MAKE} clean")
end
task :distclean => [:extconf] do
system("#{MAKE} distclean")
end
task :make_build => [:extconf] do
system("#{MAKE} build")
end
task :install => [:extconf] do
system("#{MAKE} install")
end
task :gem => [:distclean] do
warn_version() set_version() system("gem build qtbindings.gemspec") clear_version()
end
task :gemnative do
warn_version() set_version() system("#{COPY} gemspecs#{SLASH}qtbindingsnative.gemspec .") system("gem build qtbindingsnative.gemspec") system("#{DEL} qtbindingsnative.gemspec") clear_version()
end
task :gemqt do
warn_version() set_version() system("#{MAKE} installqt") system("#{COPY} gemspecs#{SLASH}qtbindings-qt.gemspec .") system("gem build qtbindings-qt.gemspec") system("#{DEL} qtbindings-qt.gemspec") clear_version()
end
task :build do
Rake::Task[:extconf].execute Rake::Task[:all].execute Rake::Task[:install].execute
end