Sha256: 0364d16e61f43318bd70aafe1d628169d22e0489d823e7f8f67baf83c8721d67
Contents?: true
Size: 1.84 KB
Versions: 6
Compression:
Stored size: 1.84 KB
Contents
# -*- mode: ruby; coding: utf-8 -*- require 'rbconfig' task :ext => 'ext:build' %w[clean].each do |t| task t.intern => "ext:#{t}" end namespace :ext do rbconf = RbConfig::CONFIG mod = MODULE mods = env :MODULES, [], :array modname = env :MODNAME, mod.name.downcase dlname = env :DLNAME, 'native' dlext = env :DLEXT, rbconf['DLEXT'] || 'so' extdir = env :EXTDIR, "ext/#{modname}" libdir = env :LIBDIR, "lib/#{modname}" ruby = env :RUBY, 'ruby' make = env :MAKE, 'make' cxx = env :CXX, rbconf['CXX'] || 'g++' cppflags = env :CPPFLAGS, rbconf['CPPFLAGS'] cxxflags = env :CXXFLAGS, rbconf['CXXFLAGS'] defs = env :DEFS, [], :array incdirs = env(:INCDIRS, [], :array) + mods.reverse.map {|m| m.include_dir} cppflags = cppflags cppflags, defs, incdirs cxxflags = cflags cxxflags outname = "#{dlname}.#{dlext}" extout = File.join extdir, outname libout = File.join libdir, outname srcs = FileList["#{extdir}/**/*.cpp"] libs = FileList["#{libdir}/../lib*.a"] extconf = File.join extdir, 'extconf.rb' makefile = File.join extdir, 'Makefile' depend = File.join extdir, 'depend.mf' task :build => libout task :clean do sh %( cd #{extdir} && #{make} clean ) if File.exist? makefile sh %( rm -rf #{makefile} #{depend} #{libout} ) end file libout => extout do sh %( cp #{extout} #{libout} ) end file extout => [:lib, makefile] do sh %( cd #{extdir} && #{make} ) end file makefile => [extconf, depend] + libs do sh %( cd #{extdir} && #{ruby} #{File.basename extconf} ) end file depend => srcs do inc = incdirs.map {|s| " -I#{s}"}.join src = srcs.map {|cpp| File.basename cpp}.join ' ' dep = File.basename depend sh %( cd #{extdir} && #{cxx} -M #{cppflags} #{inc} #{src} > #{dep} ) end end# :ext
Version data entries
6 entries across 6 versions & 1 rubygems
Version | Path |
---|---|
xot-0.1.12 | task/ext.rake |
xot-0.1.11 | task/ext.rake |
xot-0.1.10 | task/ext.rake |
xot-0.1.9 | task/ext.rake |
xot-0.1.8 | task/ext.rake |
xot-0.1.7 | task/ext.rake |