Top Level Namespace

Defined Under Namespace

Modules: Mkrf

Instance Method Summary collapse

Instance Method Details

#base_gem_spec(pkg_name, pkg_version) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/mkrf/rakehelper.rb', line 71

def base_gem_spec(pkg_name, pkg_version)
  rm_rf "test/coverage"

  pkg_version = pkg_version
  pkg_name    = pkg_name
  pkg_file_name = "#{pkg_name}-#{pkg_version}"
  Gem::Specification.new do |s|
    s.name = pkg_name
    s.version = pkg_version
    s.platform = Gem::Platform::RUBY
    s.has_rdoc = true
    s.extra_rdoc_files = [ "README" ]

    s.files = %w(Rakefile) +
      Dir.glob("{bin,doc/rdoc,ext,examples}/**/*") + 
      Dir.glob("tools/*.rb") +
      Dir.glob(RUBY_PLATFORM !~ /mswin/ ? "lib/**/*.rb" : "lib/**/*")

    s.require_path = "lib"
    s.bindir = "bin"
  end
end

#mkrf_conf(dir) ⇒ Object



13
14
15
# File 'lib/mkrf/rakehelper.rb', line 13

def mkrf_conf(dir)
  Dir.chdir(dir) do ruby "mkrf_conf.rb" end
end

#rake(rakedir) ⇒ Object

Copyright © 2005 Zed A. Shaw with portions by Kevin Clark

You can redistribute it and/or modify it under the same terms as Ruby.


6
7
8
9
10
# File 'lib/mkrf/rakehelper.rb', line 6

def rake(rakedir)
  Dir.chdir(rakedir) do
    sh 'rake'
  end
end

#setup_clean(otherfiles) ⇒ Object



27
28
29
30
# File 'lib/mkrf/rakehelper.rb', line 27

def setup_clean otherfiles
  files = ['build/*', '**/*.o', '**/*.so', '**/*.a', 'lib/*-*', '**/*.log'] + otherfiles
  CLEAN.include(files)
end

#setup_extension(dir, extension) ⇒ Object



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
# File 'lib/mkrf/rakehelper.rb', line 42

def setup_extension(dir, extension)
  ext = "ext/#{dir}"
  ext_so = "#{ext}/#{extension}.#{Config::CONFIG['DLEXT']}"
  ext_files = FileList[
    "#{ext}/*.c",
    "#{ext}/*.h",
    "#{ext}/mkrf_conf.rb",
    "#{ext}/Rakefile",
    "lib"
  ] 

  task "lib" do
    directory "lib"
  end

  desc "Builds just the #{extension} extension"
  task extension.to_sym => ["#{ext}/Rakefile", ext_so ]

  file "#{ext}/Rakefile" => ["#{ext}/mkrf_conf.rb"] do
    mkrf_conf "#{ext}"
  end

  file ext_so => ext_files do
    rake "#{ext}"
    cp ext_so, "lib"
  end
end

#setup_gem(pkg_name, pkg_version) {|spec| ... } ⇒ Object

Yields:

  • (spec)


94
95
96
97
98
99
100
101
102
103
# File 'lib/mkrf/rakehelper.rb', line 94

def setup_gem(pkg_name, pkg_version)
  spec = base_gem_spec(pkg_name, pkg_version)
  yield spec if block_given?


  Rake::GemPackageTask.new(spec) do |p|
    p.gem_spec = spec
    p.need_tar = true if RUBY_PLATFORM !~ /mswin/
  end
end

#setup_rdoc(files) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/mkrf/rakehelper.rb', line 33

def setup_rdoc files
  Rake::RDocTask.new do |rdoc|
    rdoc.rdoc_dir = 'doc/rdoc'
    rdoc.options << '--line-numbers'
    rdoc.rdoc_files.add(files)
  end
end

#setup_testsObject



18
19
20
21
22
23
24
# File 'lib/mkrf/rakehelper.rb', line 18

def setup_tests
  Rake::TestTask.new do |t|
    t.libs << "test"
    t.test_files = FileList['test/test*.rb']
    t.verbose = true
  end
end

#sub_project(project, *targets) ⇒ Object



105
106
107
108
109
110
111
# File 'lib/mkrf/rakehelper.rb', line 105

def sub_project(project, *targets)
  targets.each do |target|
    Dir.chdir "projects/#{project}" do
      sh %{rake --trace #{target.to_s} }
    end
  end
end