<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -11,3 +11,12 @@ Feature: Cross-compile C extensions
     When rake task 'cross compile' is invoked
     Then rake task 'cross compile' succeeded
     And binaries for platform 'i386-mingw32' get generated
+
+  Scenario: compile single extension to multiple versions
+    Given that all my source files are in place
+    And I'm running a POSIX operating system
+    And I've installed cross compile toolchain
+    When rake task 'cross compile RUBY_CC_VERSION=1.8.6:1.9.1' is invoked
+    Then rake task 'cross compile RUBY_CC_VERSION=1.8.6:1.9.1' succeeded
+    And binaries for platform 'i386-mingw32' version '1.8' get copied
+    And binaries for platform 'i386-mingw32' version '1.9' get copied</diff>
      <filename>features/cross-compile.feature</filename>
    </modified>
    <modified>
      <diff>@@ -22,3 +22,11 @@ Then /^binaries for platform '(.*)' get generated$/ do |platform|
   ext_for_platform = Dir.glob(&quot;tmp/#{platform}/**/*.#{ext}&quot;)
   ext_for_platform.should_not be_empty
 end
+
+Then /^binaries for platform '(.*)' version '(.*)' get copied$/ do |platform, version|
+  lib_path = &quot;lib/#{version}&quot;
+  ext = binary_extension(platform)
+
+  ext_for_platform = Dir.glob(&quot;#{lib_path}/*.#{ext}&quot;)
+  ext_for_platform.should_not be_empty
+end</diff>
      <filename>features/step_definitions/cross_compilation.rb</filename>
    </modified>
    <modified>
      <diff>@@ -236,8 +236,22 @@ module Rake
         ruby_vers = [RUBY_VERSION]
       end
 
+      multi = (ruby_vers.size &gt; 1) ? true : false
+
       ruby_vers.each do |version|
+        # save original lib_dir
+        orig_lib_dir = @lib_dir
+
+        # tweak lib directory only when targeting multiple versions
+        if multi then
+          version =~ /(\d+.\d+)/
+          @lib_dir = &quot;#{@lib_dir}/#{$1}&quot;
+        end
+
         define_cross_platform_tasks_with_version(for_platform, version)
+
+        # restore lib_dir
+        @lib_dir = orig_lib_dir
       end
     end
 </diff>
      <filename>lib/rake/extensiontask.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>687d11574a44421f0dd3fd43b5a18fdae2b7ade5</id>
    </parent>
  </parents>
  <author>
    <name>Luis Lavena</name>
    <email>luislavena@gmail.com</email>
  </author>
  <url>http://github.com/luislavena/rake-compiler/commit/56fdb8b0669b879c237a06c23e09f8bce9ce2cf2</url>
  <id>56fdb8b0669b879c237a06c23e09f8bce9ce2cf2</id>
  <committed-date>2009-05-30T17:28:48-07:00</committed-date>
  <authored-date>2009-05-30T17:28:48-07:00</authored-date>
  <message>Allow targeting multiple versions for cross compiling.

This change automatically append MAJOR.MINOR Ruby version
of the compiled extension in the target directory.

A better picture:

  rake cross compile RUBY_CC_VERSION=1.8.6:1.9.1

Will generate the following files:

  lib/1.8/extension_name.so
  lib/1.9/extension_name.so</message>
  <tree>7f043d6e4d532d2035147c73fb4508c8720ddbe9</tree>
  <committer>
    <name>Luis Lavena</name>
    <email>luislavena@gmail.com</email>
  </committer>
</commit>
