Sha256: 201793207af7299aef11734970dd57c1b79cf2a4f429a40918c9bd886d5d48ed

Contents?: true

Size: 1.18 KB

Versions: 2

Compression:

Stored size: 1.18 KB

Contents

require 'rubygems/ext'

module Shoe
  module Tasks

    # Defines <tt>`rake compile`</tt> to build your C extensions.
    #
    # Uses
    # <tt>{Gem::Ext::ExtConfBuilder}[http://rubygems.rubyforge.org/rubygems-update/Gem/Ext/ExtConfBuilder.html]</tt>,
    # so extensions are compiled locally just as they will be with <tt>`gem
    # install`</tt>. Your users will thank you.
    #
    # To enable and configure, add
    # <tt>extensions[http://docs.rubygems.org/read/chapter/20#extensions]</tt>
    # to your gemspec.
    class Compile < Abstract
      def active?
        !spec.extensions.empty?
      end

      def define
        desc 'Compile C extensions'
        task :compile do
          top_level_path   = File.expand_path('.')
          destination_path = File.join(top_level_path, spec.require_paths.first)

          spec.extensions.each do |extension|
            Dir.chdir File.dirname(extension) do
              Gem::Ext::ExtConfBuilder.build(
                extension,
                top_level_path,
                destination_path,
                results = []
              )
            end
          end
        end

        task :prepare => :compile
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
shoe-0.5.1 lib/shoe/tasks/compile.rb
shoe-0.5.0 lib/shoe/tasks/compile.rb