summaryrefslogtreecommitdiff
path: root/features/support/file_template_helpers.rb
blob: 76bed5000039abcadd34d8bbae39768053aa0aa1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
module FileTemplateHelpers
  def template_rakefile
    <<-EOF
# add rake-compiler lib dir to the LOAD_PATH
$LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), '../..', 'lib'))

require 'rubygems'
require 'rake'

# load rakefile extensions (tasks)
Dir['tasks/*.rake'].each { |f| import f }
EOF
  end

  def template_rake_gemspec(gem_name)
    <<-EOF
require 'rake/gempackagetask'
SPEC = Gem::Specification.new do |s|
  s.name = "#{gem_name}"
  s.version = "0.1.0"
  s.summary = "#{gem_name} test gem for rake-compiler"

  s.files = FileList["ext/**/*.{rb,c,h}", "Rakefile", "tasks/*.rake", "lib/**/*.rb"]

  s.extensions = FileList["ext/**/extconf.rb"]

  s.has_rdoc = true

  s.homepage = 'http://github.com/luislavena/rake-compiler'
  s.rubyforge_project = 'TODO'

  s.authors = ["Luis Lavena"]
  s.email = ["luislavena@gmail.com"]
end

gem_package = Rake::GemPackageTask.new(SPEC) do |pkg|
  pkg.need_zip = false
  pkg.need_tar = false
end
EOF
  end

  def template_rake_extension(extension_name, gem_spec = nil)
    <<-EOF
require 'rake/extensiontask'
Rake::ExtensionTask.new("#{extension_name}"#{', SPEC' if gem_spec})
EOF
  end

  def template_rake_extension_with_platform(extension_name, platform)
    <<-EOF
require 'rake/extensiontask'
Rake::ExtensionTask.new("#{extension_name}", SPEC) do |ext|
  ext.platform = "#{platform}"
end
EOF
  end

  def template_rake_extension_cross_compile(extension_name, gem_spec = nil)
    <<-EOF
require 'rake/extensiontask'
Rake::ExtensionTask.new("#{extension_name}"#{', SPEC' if gem_spec}) do |ext|
  ext.cross_compile = true
end
EOF
  end

  def template_rake_extension_multi_cross_compile(extension_name)
    <<-EOF
require 'rake/extensiontask'
Rake::ExtensionTask.new("#{extension_name}", SPEC) do |ext|
  ext.cross_compile = true
  ext.cross_platform = ['i386-mswin32', 'i386-mingw32']
end
EOF
  end

  def template_extconf(extension_name)
    <<-EOF
require 'mkmf'
create_makefile("#{extension_name}")
EOF
  end

  def template_source_c(extension_name)
    <<-EOF
#include "source.h"
void Init_#{extension_name}()
{
  printf("source.c of extension #{extension_name}\\n");
}
EOF
  end

  def template_source_h
    <<-EOF
#include "ruby.h"
EOF
  end
end

World(FileTemplateHelpers)