Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

186 lines (169 sloc) 5.578 kB
#!/usr/bin/env ruby
require 'date'
require 'rake/clean'
require 'rake/testtask'
require 'rake/packagetask'
require 'rake/loaders/makefile'
require 'rbconfig'
PKG_NAME = 'hornetseye-xorg'
PKG_VERSION = '0.3.1'
CFG = RbConfig::CONFIG
CXX = ENV[ 'CXX' ] || 'g++'
RB_FILES = FileList[ 'lib/**/*.rb' ]
CC_FILES = FileList[ 'ext/*.cc' ]
HH_FILES = FileList[ 'ext/*.hh' ] + FileList[ 'ext/*.tcc' ]
TC_FILES = FileList[ 'test/tc_*.rb' ]
TS_FILES = FileList[ 'test/ts_*.rb' ]
SO_FILE = "ext/#{PKG_NAME.tr '\-', '_'}.#{CFG[ 'DLEXT' ]}"
PKG_FILES = [ 'Rakefile', 'README.md', 'COPYING', '.document' ] +
RB_FILES + CC_FILES + HH_FILES + TS_FILES + TC_FILES
BIN_FILES = [ 'README.md', 'COPYING', '.document', SO_FILE ] +
RB_FILES + TS_FILES + TC_FILES
SUMMARY = %q{Graphical output under X.Org}
DESCRIPTION = %q{This Ruby extension provides graphical output under X.Org.}
AUTHOR = %q{Jan Wedekind}
EMAIL = %q{jan@wedesoft.de}
HOMEPAGE = %q{http://wedesoft.github.com/hornetseye-xorg/}
OBJ = CC_FILES.ext 'o'
$CXXFLAGS = "-DNDEBUG #{CFG[ 'CPPFLAGS' ]} #{CFG[ 'CFLAGS' ]}"
if CFG[ 'rubyhdrdir' ]
$CXXFLAGS = "#{$CXXFLAGS} -I#{CFG[ 'rubyhdrdir' ]} " +
"-I#{CFG[ 'rubyhdrdir' ]}/#{CFG[ 'arch' ]}"
else
$CXXFLAGS = "#{$CXXFLAGS} -I#{CFG[ 'archdir' ]}"
end
$LIBRUBYARG = "-L#{CFG[ 'libdir' ]} #{CFG[ 'LIBRUBYARG' ]} #{CFG[ 'LDFLAGS' ]} " +
"#{CFG[ 'SOLIBS' ]} #{CFG[ 'DLDLIBS' ]}"
$SITELIBDIR = CFG[ 'sitelibdir' ]
$SITEARCHDIR = CFG[ 'sitearchdir' ]
$LDSHARED = CFG[ 'LDSHARED' ][ CFG[ 'LDSHARED' ].index( ' ' ) .. -1 ]
task :default => :all
desc 'Compile Ruby extension (default)'
task :all => [ SO_FILE ]
file SO_FILE => OBJ do |t|
sh "#{CXX} -shared -o #{t.name} #{OBJ} -lGLU -lGL -lX11 -lXv -lXpm #{$LIBRUBYARG}"
end
task :test => [ SO_FILE ]
desc 'Install Ruby extension'
task :install => :all do
verbose true do
for f in RB_FILES do
FileUtils.mkdir_p "#{$SITELIBDIR}/#{File.dirname f.gsub( /^lib\//, '' )}"
FileUtils.cp_r f, "#{$SITELIBDIR}/#{f.gsub( /^lib\//, '' )}"
end
FileUtils.mkdir_p $SITEARCHDIR
FileUtils.cp SO_FILE, "#{$SITEARCHDIR}/#{File.basename SO_FILE}"
end
end
desc 'Uninstall Ruby extension'
task :uninstall do
verbose true do
for f in RB_FILES do
FileUtils.rm_f "#{$SITELIBDIR}/#{f.gsub /^lib\//, ''}"
end
FileUtils.rm_f "#{$SITEARCHDIR}/#{File.basename SO_FILE}"
end
end
Rake::TestTask.new do |t|
t.libs << 'ext'
t.test_files = TC_FILES
end
begin
require 'yard'
YARD::Rake::YardocTask.new :yard do |y|
y.options << '--no-private'
y.files << FileList[ 'lib/**/*.rb' ]
end
rescue LoadError
STDERR.puts 'Please install \'yard\' if you want to generate documentation'
end
Rake::PackageTask.new PKG_NAME, PKG_VERSION do |p|
p.need_tar = true
p.package_files = PKG_FILES
end
begin
require 'rubygems'
require 'rubygems/builder'
$SPEC = Gem::Specification.new do |s|
s.name = PKG_NAME
s.version = PKG_VERSION
s.platform = Gem::Platform::RUBY
s.date = Date.today.to_s
s.summary = SUMMARY
s.description = DESCRIPTION
s.author = AUTHOR
s.email = EMAIL
s.homepage = HOMEPAGE
s.files = PKG_FILES
s.test_files = TC_FILES
s.require_paths = [ 'lib', 'ext' ]
s.rubyforge_project = %q{hornetseye}
s.extensions = %w{Rakefile}
s.has_rdoc = 'yard'
s.extra_rdoc_files = []
s.rdoc_options = %w{--no-private}
s.add_dependency %<malloc>, [ '~> 1.1' ]
s.add_dependency %<multiarray>, [ '~> 0.9' ]
s.add_dependency %<hornetseye-frame>, [ '~> 0.6' ]
s.add_development_dependency %q{rake}
end
GEM_SOURCE = "#{PKG_NAME}-#{PKG_VERSION}.gem"
$BINSPEC = Gem::Specification.new do |s|
s.name = PKG_NAME
s.version = PKG_VERSION
s.platform = Gem::Platform::CURRENT
s.date = Date.today.to_s
s.summary = SUMMARY
s.description = DESCRIPTION
s.author = AUTHOR
s.email = EMAIL
s.homepage = HOMEPAGE
s.files = BIN_FILES
s.test_files = TC_FILES
s.require_paths = [ 'lib', 'ext' ]
s.rubyforge_project = %q{hornetseye}
s.has_rdoc = 'yard'
s.extra_rdoc_files = []
s.rdoc_options = %w{--no-private}
s.add_dependency %<malloc>, [ '~> 1.1' ]
s.add_dependency %<multiarray>, [ '~> 0.9' ]
s.add_dependency %<hornetseye-frame>, [ '~> 0.6' ]
end
GEM_BINARY = "#{PKG_NAME}-#{PKG_VERSION}-#{$BINSPEC.platform}.gem"
desc "Build the gem file #{GEM_SOURCE}"
task :gem => [ "pkg/#{GEM_SOURCE}" ]
file "pkg/#{GEM_SOURCE}" => [ 'pkg' ] + $SPEC.files do
when_writing 'Creating GEM' do
Gem::Builder.new( $SPEC ).build
verbose true do
FileUtils.mv GEM_SOURCE, "pkg/#{GEM_SOURCE}"
end
end
end
desc "Build the gem file #{GEM_BINARY}"
task :gem_binary => [ "pkg/#{GEM_BINARY}" ]
file "pkg/#{GEM_BINARY}" => [ 'pkg' ] + $BINSPEC.files do
when_writing 'Creating binary GEM' do
Gem::Builder.new( $BINSPEC ).build
verbose true do
FileUtils.mv GEM_BINARY, "pkg/#{GEM_BINARY}"
end
end
end
rescue LoadError
STDERR.puts 'Please install \'rubygems\' if you want to create Gem packages'
end
rule '.o' => '.cc' do |t|
sh "#{CXX} #{$CXXFLAGS} -c -o #{t.name} #{t.source}"
end
file ".depends.mf" do |t|
sh "g++ -MM #{CC_FILES.join ' '} | " +
"sed -e :a -e N -e 's/\\n/\\$/g' -e ta | " +
"sed -e 's/ *\\\\\\$ */ /g' -e 's/\\$/\\n/g' | sed -e 's/^/ext\\//' > #{t.name}"
end
CC_FILES.each do |t|
file t.ext(".o") => t
end
import ".depends.mf"
CLEAN.include 'ext/*.o'
CLOBBER.include SO_FILE, 'doc', '.yardoc', '.depends.mf'
Jump to Line
Something went wrong with that request. Please try again.