hitimes 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY CHANGED
@@ -1,16 +1,23 @@
1
1
  = Changelog
2
+ == Version 1.0.2 2009-06-28
3
+
4
+ * Fix bug with time.h on linode (reported by Roger Pack)
5
+ * Fix potential garbage collection issue with Interval class
6
+ * Windows gem is now a fat binary to support installing in 1.8 or 1.9 from the
7
+ same gem
8
+
2
9
  == Version 1.0.1 2009-06-12
3
10
 
4
11
  * Fix examples
5
- * performance tuning, new Metric classes are faster than old Timer class
12
+ * performance tuning, new Hitimes::Metric derived classes are faster than old Timer class
6
13
 
7
14
  == Version 1.0.0 2009-06-12
8
15
 
9
16
  * Major version bump with complete refactor of the metric collection API
10
17
  * 3 types of metrics now instead of just 1 Timer
11
- * ValueMetric
12
- * TimedMetric
13
- * TimedValueMetric
18
+ * Hitimes::ValueMetric
19
+ * Hitimes::TimedMetric
20
+ * Hitimes::TimedValueMetric
14
21
  * The ability to convert all metrics #to_hash
15
22
  * Updated documentation with examples using each metric type
16
23
 
@@ -23,7 +30,7 @@
23
30
 
24
31
  * Added new stat 'rate'
25
32
  * Added new stat method to_hash
26
- * Added MutexedStats class for threadsafe stats collection
33
+ * Added Hitimes::MutexedStats class for threadsafe stats collection
27
34
  - not needed when used in MRI 1.8.x
28
35
  * remove stale dependency on mkrf
29
36
 
@@ -41,7 +48,7 @@
41
48
  == Version 0.2.0
42
49
 
43
50
  * Performance improvements
44
- * Added Stats class
51
+ * Added Hitimes::Stats class
45
52
 
46
53
  == Version 0.1.0
47
54
 
data/Rakefile CHANGED
@@ -59,5 +59,8 @@ Rake.application.tasks.each do |t|
59
59
  if t.name =~ /:clobber/ then
60
60
  task :clobber => [t.name]
61
61
  end
62
+ if t.name =~ /:clean/ then
63
+ task :clean => [t.name]
64
+ end
62
65
  end
63
66
 
@@ -12,4 +12,10 @@ else
12
12
  end
13
13
  end
14
14
 
15
- create_makefile('hitimes_ext')
15
+ # put in a different location if on windows so we can have fat binaries
16
+ parent_dir = "hitimes"
17
+ if RUBY_PLATFORM =~ /(mswin|mingw)/i then
18
+ v = RUBY_VERSION.gsub(/\.\d$/,'')
19
+ parent_dir = File.join( parent_dir, v )
20
+ end
21
+ create_makefile("#{parent_dir}/hitimes_ext")
@@ -2,11 +2,14 @@
2
2
 
3
3
  #include "hitimes_interval.h"
4
4
 
5
- #include <sys/time.h>
5
+ #include <time.h>
6
6
  #ifndef CLOCK_MONOTONIC
7
- # ifdef __linux__
8
- # include <linux/time.h>
9
- # endif
7
+ # include <sys/time.h>
8
+ # ifndef CLOCK_MONOTONIC
9
+ # ifdef __linux__
10
+ # include <linux/time.h>
11
+ # endif
12
+ # endif
10
13
  #endif
11
14
 
12
15
  hitimes_instant_t hitimes_get_current_instant( )
@@ -7,7 +7,7 @@
7
7
  * returns the conversion factor, this value is used to convert
8
8
  * the value from hitimes_get_current_instant() into seconds
9
9
  */
10
- double hitimes_instant_conversion_factor()
10
+ long double hitimes_instant_conversion_factor()
11
11
  {
12
12
  LARGE_INTEGER ticks_per_second;
13
13
  QueryPerformanceFrequency( &ticks_per_second );
@@ -16,10 +16,6 @@ VALUE cH_Interval; /* class Hitimes::Interval */
16
16
 
17
17
  VALUE hitimes_interval_free(hitimes_interval_t* i)
18
18
  {
19
- if ( Qnil != i->duration ) {
20
- rb_gc_unregister_address( &(i->duration) );
21
- i->duration = Qnil;
22
- }
23
19
  xfree( i );
24
20
  return Qnil;
25
21
  }
@@ -31,7 +27,7 @@ VALUE hitimes_interval_alloc(VALUE klass)
31
27
 
32
28
  i->start_instant = 0L;
33
29
  i->stop_instant = 0L;
34
- i->duration = Qnil;
30
+ i->duration = -1.0l;
35
31
 
36
32
  obj = Data_Wrap_Struct(klass, NULL, hitimes_interval_free, i);
37
33
  return obj;
@@ -50,7 +46,7 @@ VALUE hitimes_interval_now( VALUE self )
50
46
 
51
47
  i->start_instant = hitimes_get_current_instant( );
52
48
  i->stop_instant = 0L;
53
- i->duration = Qnil;
49
+ i->duration = -1.0l;
54
50
 
55
51
  obj = Data_Wrap_Struct(cH_Interval, NULL, hitimes_interval_free, i);
56
52
 
@@ -67,7 +63,7 @@ VALUE hitimes_interval_measure( VALUE self )
67
63
  {
68
64
  hitimes_instant_t before;
69
65
  hitimes_instant_t after;
70
- double duration;
66
+ long double duration;
71
67
 
72
68
  if ( !rb_block_given_p() ) {
73
69
  rb_raise(eH_Error, "No block given to Interval.measure" );
@@ -99,7 +95,7 @@ VALUE hitimes_interval_split( VALUE self )
99
95
 
100
96
  second->start_instant = first->stop_instant;
101
97
  second->stop_instant = 0L;
102
- second->duration = Qnil;
98
+ second->duration = -1.0l;
103
99
 
104
100
  obj = Data_Wrap_Struct(cH_Interval, NULL, hitimes_interval_free, second);
105
101
 
@@ -124,7 +120,7 @@ VALUE hitimes_interval_start( VALUE self )
124
120
  if ( 0L == i->start_instant ) {
125
121
  i->start_instant = hitimes_get_current_instant( );
126
122
  i->stop_instant = 0L;
127
- i->duration = Qnil;
123
+ i->duration = -1.0l;
128
124
 
129
125
  rc = Qtrue;
130
126
  }
@@ -152,13 +148,9 @@ VALUE hitimes_interval_stop( VALUE self )
152
148
  }
153
149
 
154
150
  if ( 0L == i->stop_instant ) {
155
- double d;
156
-
157
151
  i->stop_instant = hitimes_get_current_instant( );
158
- d = ( i->stop_instant - i->start_instant ) / HITIMES_INSTANT_CONVERSION_FACTOR;
159
- i->duration = rb_float_new( d );
160
- rb_gc_register_address( &(i->duration) );
161
- rc = i->duration;
152
+ i->duration = ( i->stop_instant - i->start_instant ) / HITIMES_INSTANT_CONVERSION_FACTOR;
153
+ rc = rb_float_new( i->duration );
162
154
  }
163
155
 
164
156
  return rc;
@@ -176,7 +168,6 @@ VALUE hitimes_interval_duration_so_far( VALUE self )
176
168
  {
177
169
  hitimes_interval_t *i;
178
170
  VALUE rc = Qfalse;
179
- double d;
180
171
 
181
172
  Data_Get_Struct( self, hitimes_interval_t, i );
182
173
  if ( 0L == i->start_instant ) {
@@ -184,6 +175,7 @@ VALUE hitimes_interval_duration_so_far( VALUE self )
184
175
  }
185
176
 
186
177
  if ( 0L == i->stop_instant ) {
178
+ long double d;
187
179
  hitimes_instant_t now = hitimes_get_current_instant( );
188
180
  d = ( now - i->start_instant ) / HITIMES_INSTANT_CONVERSION_FACTOR;
189
181
  rc = rb_float_new( d );
@@ -293,7 +285,6 @@ VALUE hitimes_interval_stop_instant( VALUE self )
293
285
  VALUE hitimes_interval_duration ( VALUE self )
294
286
  {
295
287
  hitimes_interval_t *i;
296
- double d;
297
288
 
298
289
  Data_Get_Struct( self, hitimes_interval_t, i );
299
290
 
@@ -301,22 +292,20 @@ VALUE hitimes_interval_duration ( VALUE self )
301
292
  * if stop has not yet been called, then return the amount of time so far
302
293
  */
303
294
  if ( 0L == i->stop_instant ) {
295
+ long double d;
304
296
  hitimes_instant_t now = hitimes_get_current_instant( );
305
297
  d = ( now - i->start_instant ) / HITIMES_INSTANT_CONVERSION_FACTOR;
306
298
  return rb_float_new( d );
307
- }
308
-
299
+ }
309
300
 
310
301
  /*
311
302
  * stop has been called, calculate the duration and save the result
312
303
  */
313
- if ( Qnil == i->duration ) {
314
- d = ( i->stop_instant - i->start_instant ) / HITIMES_INSTANT_CONVERSION_FACTOR;
315
- i->duration = rb_float_new( d );
316
- rb_gc_register_address( &(i->duration) );
304
+ if ( i->duration < 0.0 ) {
305
+ i->duration = ( i->stop_instant - i->start_instant ) / HITIMES_INSTANT_CONVERSION_FACTOR;
317
306
  }
318
307
 
319
- return i->duration;
308
+ return rb_float_new( i->duration );
320
309
  }
321
310
 
322
311
 
@@ -10,14 +10,14 @@
10
10
 
11
11
  #include <ruby.h>
12
12
 
13
- #define NANOSECONDS_PER_SECOND 1e9
13
+ #define NANOSECONDS_PER_SECOND 1e9l
14
14
 
15
15
  #ifdef USE_INSTANT_CLOCK_GETTIME
16
16
  # define HITIMES_U64INT unsigned long long int
17
- # define HITIMES_INSTANT_CONVERSION_FACTOR 1e9
17
+ # define HITIMES_INSTANT_CONVERSION_FACTOR 1e9l
18
18
  #elif USE_INSTANT_OSX
19
19
  # define HITIMES_U64INT unsigned long long int
20
- # define HITIMES_INSTANT_CONVERSION_FACTOR 1e9
20
+ # define HITIMES_INSTANT_CONVERSION_FACTOR 1e9l
21
21
  #elif USE_INSTANT_WINDOWS
22
22
  # define HITIMES_U64INT unsigned __int64
23
23
  # define HITIMES_INSTANT_CONVERSION_FACTOR hitimes_instant_conversion_factor()
@@ -34,12 +34,12 @@ typedef HITIMES_U64INT hitimes_instant_t;
34
34
  typedef struct hitimes_interval {
35
35
  hitimes_instant_t start_instant;
36
36
  hitimes_instant_t stop_instant;
37
- VALUE duration;
37
+ long double duration;
38
38
  } hitimes_interval_t;
39
39
 
40
40
  /* all the backends must define this method */
41
41
  hitimes_instant_t hitimes_get_current_instant( );
42
- double hitimes_instant_conversion_factor( );
42
+ long double hitimes_instant_conversion_factor( );
43
43
 
44
44
  /* init methods */
45
45
  void Init_hitimes_stats();
@@ -46,10 +46,11 @@ VALUE hitimes_stats_alloc(VALUE klass)
46
46
  */
47
47
  VALUE hitimes_stats_update( VALUE self, VALUE v )
48
48
  {
49
- double new_v = NUM2DBL( v );
49
+ long double new_v;
50
50
  hitimes_stats_t *stats;
51
51
 
52
52
  Data_Get_Struct( self, hitimes_stats_t, stats );
53
+ new_v = NUM2DBL( v );
53
54
 
54
55
  if ( 0 == stats->count ) {
55
56
  stats->min = new_v;
@@ -76,7 +77,7 @@ VALUE hitimes_stats_update( VALUE self, VALUE v )
76
77
  VALUE hitimes_stats_mean( VALUE self )
77
78
  {
78
79
  hitimes_stats_t *stats;
79
- double mean = 0.0;
80
+ long double mean = 0.0;
80
81
 
81
82
  Data_Get_Struct( self, hitimes_stats_t, stats );
82
83
 
@@ -106,7 +107,7 @@ VALUE hitimes_stats_mean( VALUE self )
106
107
  VALUE hitimes_stats_rate( VALUE self )
107
108
  {
108
109
  hitimes_stats_t *stats;
109
- double rate = 0.0;
110
+ long double rate = 0.0;
110
111
 
111
112
  Data_Get_Struct( self, hitimes_stats_t, stats );
112
113
 
@@ -210,7 +211,7 @@ VALUE hitimes_stats_sumsq( VALUE self )
210
211
  VALUE hitimes_stats_stddev ( VALUE self )
211
212
  {
212
213
  hitimes_stats_t *stats;
213
- double stddev = 0.0;
214
+ long double stddev = 0.0;
214
215
 
215
216
  Data_Get_Struct( self, hitimes_stats_t, stats );
216
217
  if ( stats->count > 1 ) {
@@ -18,11 +18,11 @@ extern VALUE cH_Stats; /* Hitimes::Stats */
18
18
 
19
19
 
20
20
  typedef struct hitimes_stats {
21
- double min;
22
- double max;
23
- double sum;
24
- double sumsq;
25
- long count;
21
+ long double min;
22
+ long double max;
23
+ long double sum;
24
+ long double sumsq;
25
+ long long count;
26
26
  } hitimes_stats_t;
27
27
 
28
28
  #endif
data/gemspec.rb CHANGED
@@ -24,6 +24,7 @@ Hitimes::GEM_SPEC = Gem::Specification.new do |spec|
24
24
  spec.add_dependency("configuration", " ~> 0.0.5")
25
25
 
26
26
  spec.add_development_dependency( "json", "~> 1.1.3")
27
+ spec.add_development_dependency( "rake-compiler", "~> 0.5.0")
27
28
 
28
29
  if ext_conf = Configuration.for_if_exist?("extension") then
29
30
  spec.extensions << ext_conf.configs
@@ -51,6 +52,6 @@ end
51
52
  Hitimes::GEM_SPEC_WIN = Hitimes::GEM_SPEC.clone
52
53
  Hitimes::GEM_SPEC_WIN.platform = ::Gem::Platform.new( "i386-mswin32_60" )
53
54
  Hitimes::GEM_SPEC_WIN.extensions = []
54
- Hitimes::GEM_SPEC_WIN.files += ["lib/hitimes_ext.so"]
55
+ Hitimes::GEM_SPEC_WIN.files += FileList["lib/hitimes/{1.8,1.9}/**.{dll,so}"].to_a
55
56
 
56
57
  Hitimes::SPECS = [ Hitimes::GEM_SPEC, Hitimes::GEM_SPEC_WIN ]
@@ -18,7 +18,13 @@ module Hitimes
18
18
  end
19
19
  require 'hitimes/paths'
20
20
  require 'hitimes/version'
21
- require 'hitimes_ext'
21
+
22
+ # support for fat binaries on windows
23
+ if RUBY_PLATFORM =~ /(mswin|mingw)/i
24
+ require "hitimes/#{RUBY_VERSION.sub(/\.\d$/,'')}/hitimes_ext"
25
+ else
26
+ require 'hitimes/hitimes_ext'
27
+ end
22
28
  require 'hitimes/stats'
23
29
  require 'hitimes/mutexed_stats'
24
30
  require 'hitimes/metric'
@@ -16,7 +16,7 @@ module Hitimes
16
16
  MINOR = 0
17
17
 
18
18
  # Build number
19
- BUILD = 1
19
+ BUILD = 2
20
20
 
21
21
  #
22
22
  # :call-seq:
@@ -1,6 +1,6 @@
1
1
  require File.expand_path( File.join( File.dirname( __FILE__ ), "spec_helper.rb" ) )
2
2
 
3
- require 'hitimes_ext'
3
+ require 'hitimes/hitimes_ext'
4
4
 
5
5
  describe Hitimes::Interval do
6
6
  it "has a 0 duration when newly created" do
@@ -85,13 +85,19 @@ describe Hitimes::Interval do
85
85
 
86
86
  end
87
87
 
88
- it "only calculates duration once after stop is called" do
88
+ it "duration does not change after stop is calledd" do
89
89
  i = Hitimes::Interval.new
90
90
  i.start
91
- i.stop
92
- x = i.duration
91
+ x = i.stop
93
92
  y = i.duration
94
- x.object_id.should == y.object_id
93
+ i.stop.should == false
94
+
95
+ z = i.duration
96
+
97
+ x.should == y
98
+ x.should == z
99
+
100
+ y.should == z
95
101
  end
96
102
 
97
103
  it "can return how much time has elapsed from the start without stopping the interval" do
@@ -1,6 +1,6 @@
1
1
  require File.expand_path( File.join( File.dirname( __FILE__ ), "spec_helper.rb" ) )
2
2
 
3
- require 'hitimes_ext'
3
+ require 'hitimes/hitimes_ext'
4
4
  require 'hitimes/mutexed_stats'
5
5
 
6
6
  describe Hitimes::MutexedStats do
@@ -65,12 +65,12 @@ describe Hitimes::TimedMetric do
65
65
 
66
66
  it "keeps track of the min value" do
67
67
  2.times { @tm.start ; sleep 0.05 ; @tm.stop }
68
- @tm.min.should be_close( 0.05, 0.001 )
68
+ @tm.min.should be_close( 0.05, 0.002 )
69
69
  end
70
70
 
71
71
  it "keeps track of the max value" do
72
72
  2.times { @tm.start ; sleep 0.05 ; @tm.stop }
73
- @tm.max.should be_close( 0.05, 0.001 )
73
+ @tm.max.should be_close( 0.05, 0.002 )
74
74
  end
75
75
 
76
76
  it "keeps track of the sum value" do
@@ -151,7 +151,7 @@ describe Hitimes::TimedValueMetric do
151
151
  it "has a rate" do
152
152
  5.times { |x| @tm.start ; sleep 0.05 ; @tm.stop( x ) }
153
153
  h = @tm.to_hash
154
- h['rate'].should be_close( 40.0, 0.2 )
154
+ h['rate'].should be_close( 40.0, 0.3 )
155
155
  end
156
156
 
157
157
  it "has a unit_count" do
@@ -27,7 +27,7 @@ Configuration.for('packaging') {
27
27
  proj_conf = Configuration.for('project')
28
28
  files {
29
29
  bin FileList["bin/*"]
30
- ext FileList["ext/*.{c,h,rb}"]
30
+ ext FileList["ext/hitimes/*.{c,h,rb}"]
31
31
  examples FileList["examples/*.rb"]
32
32
  lib FileList["lib/**/*.rb"]
33
33
  test FileList["spec/**/*.rb", "test/**/*.rb"]
@@ -92,6 +92,7 @@ Configuration.for('rdoc') {
92
92
  #-----------------------------------------------------------------------
93
93
  Configuration.for('extension') {
94
94
  configs Configuration.for('packaging').files.ext.find_all { |x| %w[ mkrf_conf.rb extconf.rb ].include?(File.basename(x)) }
95
+ cross_rbconfig YAML.load_file( File.expand_path("~/.rake-compiler/config.yml"))
95
96
  }
96
97
 
97
98
  #-----------------------------------------------------------------------
@@ -35,12 +35,25 @@ if pkg_config = Configuration.for_if_exist?("packaging") then
35
35
  task :reinstall => [:uninstall, :repackage, :install]
36
36
 
37
37
  desc "package up a windows gem"
38
- task :package_win => "ext:build_win" do
39
- cp "ext/hitimes_ext.so", "lib", :verbose => true
38
+ task :package_win => :clean do
39
+ Configuration.for("extension").cross_rbconfig.keys.each do |rbconfig|
40
+ v = rbconfig.split("-").last
41
+ s = v.sub(/\.\d$/,'')
42
+ sh "rake ext:build_win-#{v}"
43
+ mkdir_p "lib/hitimes/#{s}", :verbose => true
44
+ cp "ext/hitimes/hitimes_ext.so", "lib/hitimes/#{s}/", :verbose => true
45
+ end
46
+
40
47
  Gem::Builder.new( Hitimes::GEM_SPEC_WIN ).build
48
+ mkdir "pkg" unless File.directory?( 'pkg' )
41
49
  mv Dir["*.gem"].first, "pkg"
42
50
  end
43
51
 
52
+ task :clobber do
53
+ rm_rf "lib/hitimes/1.8"
54
+ rm_rf "lib/hitimes/1.9"
55
+ end
56
+
44
57
  desc "distribute copiously"
45
58
  task :copious => [:package, :package_win ] do
46
59
  gems = Hitimes::SPECS.collect { |s| "#{s.full_name}.gem" }
@@ -8,41 +8,59 @@ require 'pathname'
8
8
  if ext_config = Configuration.for_if_exist?('extension') then
9
9
  namespace :ext do
10
10
  desc "Build the extension(s)"
11
- task :build do
11
+ task :build => :clean do
12
12
  Hitimes::GEM_SPEC.extensions.each do |extension|
13
13
  path = Pathname.new(extension)
14
14
  parts = path.split
15
15
  conf = parts.last
16
16
  Dir.chdir(path.dirname) do |d|
17
17
  ruby conf.to_s
18
- #sh "rake default"
19
18
  sh "make"
20
19
  end
21
20
  end
22
21
  end
23
22
 
24
- desc "Build the extension for windows"
25
- task :build_win => :clobber do
23
+ def build_win( version = "1.8.6" )
24
+ ext_config = Configuration.for("extension")
25
+ rbconfig = ext_config.cross_rbconfig["rbconfig-#{version}"]
26
+ raise ArgumentError, "No cross compiler for version #{version}, we have #{ext_config.cross_rbconfig.keys.join(",")}" unless rbconfig
27
+ ruby_exe = if version =~ /1\.8/ then
28
+ "ruby"
29
+ else
30
+ "ruby1.9"
31
+ end
26
32
  Hitimes::GEM_SPEC.extensions.each do |extension|
27
33
  path = Pathname.new(extension)
28
34
  parts = path.split
29
35
  conf = parts.last
30
36
  Dir.chdir(path.dirname) do |d|
31
- cp "rbconfig-mingw.rb", "rbconfig.rb"
32
- sh "ruby -I. extconf.rb"
37
+ cp "#{rbconfig}", "rbconfig.rb"
38
+ sh "#{ruby_exe} -I. extconf.rb"
33
39
  sh "make"
34
40
  end
35
41
  end
36
42
  end
37
43
 
44
+ win_builds = []
45
+ ext_config.cross_rbconfig.keys.each do |v|
46
+ s = v.split("-").last
47
+ desc "Build the extension for windows version #{s}"
48
+ win_bname = "build_win-#{s}"
49
+ win_builds << win_bname
50
+ task win_bname => :clean do
51
+ build_win( s )
52
+ end
53
+ end
54
+
38
55
  task :clean do
39
56
  ext_config.configs.each do |extension|
40
57
  path = Pathname.new(extension)
41
58
  parts = path.split
42
59
  conf = parts.last
43
60
  Dir.chdir(path.dirname) do |d|
44
- #sh "rake clean"
45
- sh "make clean"
61
+ if File.exist?( "Makefile" ) then
62
+ sh "make clean"
63
+ end
46
64
  end
47
65
  end
48
66
  end
@@ -53,10 +71,10 @@ if ext_config = Configuration.for_if_exist?('extension') then
53
71
  parts = path.split
54
72
  conf = parts.last
55
73
  Dir.chdir(path.dirname) do |d|
56
- #sh "rake clobber"
57
74
  if File.exist?( "Makefile" ) then
58
75
  sh "make distclean"
59
76
  end
77
+ rm_f "rbconfig.rb"
60
78
  end
61
79
  end
62
80
  end
@@ -31,6 +31,9 @@ if rf_conf = Configuration.for_if_exist?("rubyforge") then
31
31
 
32
32
  puts "Uploading to rubyforge..."
33
33
  files = FileList[File.join("pkg","#{Hitimes::GEM_SPEC.name}-#{Hitimes::VERSION}*.*")].to_a
34
+ files.each do |f|
35
+ puts " * #{f}"
36
+ end
34
37
  rubyforge.login
35
38
  rubyforge.add_release(Hitimes::GEM_SPEC.rubyforge_project, Hitimes::GEM_SPEC.name, Hitimes::VERSION, *files)
36
39
  puts "done."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hitimes
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Hinegardner
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-13 00:00:00 -06:00
12
+ date: 2009-06-28 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -42,12 +42,22 @@ dependencies:
42
42
  - !ruby/object:Gem::Version
43
43
  version: 1.1.3
44
44
  version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rake-compiler
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.5.0
54
+ version:
45
55
  description: "Hitimes is a fast, high resolution timer library for recording performance metrics. It uses the appropriate C method calls for each system to get the highest granularity time increments possible. It currently supports any of the following systems: * any system with the POSIX call <tt>clock_gettime()</tt>, * Mac OS X * Windows Using Hitimes can be faster than using a series of +Time.new+ calls, and it will have a much higher granularity. It is definitely faster than using +Process.times+."
46
56
  email: jeremy@copiousfreetime.org
47
57
  executables: []
48
58
 
49
59
  extensions:
50
- - ext/extconf.rb
60
+ - ext/hitimes/extconf.rb
51
61
  extra_rdoc_files:
52
62
  - README
53
63
  - HISTORY
@@ -61,26 +71,18 @@ extra_rdoc_files:
61
71
  - lib/hitimes/value_metric.rb
62
72
  - lib/hitimes/version.rb
63
73
  - lib/hitimes.rb
64
- - ext/hitimes_ext.c
65
- - ext/hitimes_instant_clock_gettime.c
66
- - ext/hitimes_instant_osx.c
67
- - ext/hitimes_instant_windows.c
68
- - ext/hitimes_interval.c
69
- - ext/hitimes_stats.c
70
74
  files:
71
75
  - examples/benchmarks.rb
72
76
  - examples/stats.rb
73
- - ext/hitimes_ext.c
74
- - ext/hitimes_instant_clock_gettime.c
75
- - ext/hitimes_instant_osx.c
76
- - ext/hitimes_instant_windows.c
77
- - ext/hitimes_interval.c
78
- - ext/hitimes_stats.c
79
- - ext/hitimes_interval.h
80
- - ext/hitimes_stats.h
81
- - ext/extconf.rb
82
- - ext/rbconfig-mingw.rb
83
- - ext/rbconfig.rb
77
+ - ext/hitimes/hitimes_ext.c
78
+ - ext/hitimes/hitimes_instant_clock_gettime.c
79
+ - ext/hitimes/hitimes_instant_osx.c
80
+ - ext/hitimes/hitimes_instant_windows.c
81
+ - ext/hitimes/hitimes_interval.c
82
+ - ext/hitimes/hitimes_stats.c
83
+ - ext/hitimes/hitimes_interval.h
84
+ - ext/hitimes/hitimes_stats.h
85
+ - ext/hitimes/extconf.rb
84
86
  - lib/hitimes/metric.rb
85
87
  - lib/hitimes/mutexed_stats.rb
86
88
  - lib/hitimes/paths.rb
@@ -1,178 +0,0 @@
1
-
2
- # This file was created by mkconfig.rb when ruby was built. Any
3
- # changes made to this file will be lost the next time ruby is built.
4
-
5
- module Config
6
- RUBY_VERSION == "1.8.6" or
7
- raise "ruby lib version (1.8.6) doesn't match executable version (#{RUBY_VERSION})"
8
-
9
- TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/1.8/i386-mingw32")
10
- DESTDIR = '' unless defined? DESTDIR
11
- CONFIG = {}
12
- CONFIG["DESTDIR"] = DESTDIR
13
- CONFIG["INSTALL"] = '/opt/local/bin/ginstall -c'
14
- CONFIG["prefix"] = (TOPDIR || DESTDIR + "#{ENV["HOME"]}/ruby-mingw32")
15
- CONFIG["EXEEXT"] = ".exe"
16
- CONFIG["ruby_install_name"] = "ruby"
17
- CONFIG["RUBY_INSTALL_NAME"] = "ruby"
18
- CONFIG["RUBY_SO_NAME"] = "msvcrt-ruby18"
19
- CONFIG["SHELL"] = "/bin/sh"
20
- CONFIG["PATH_SEPARATOR"] = ":"
21
- CONFIG["PACKAGE_NAME"] = ""
22
- CONFIG["PACKAGE_TARNAME"] = ""
23
- CONFIG["PACKAGE_VERSION"] = ""
24
- CONFIG["PACKAGE_STRING"] = ""
25
- CONFIG["PACKAGE_BUGREPORT"] = ""
26
- CONFIG["exec_prefix"] = "$(prefix)"
27
- CONFIG["bindir"] = "$(exec_prefix)/bin"
28
- CONFIG["sbindir"] = "$(exec_prefix)/sbin"
29
- CONFIG["libexecdir"] = "$(exec_prefix)/libexec"
30
- CONFIG["datarootdir"] = "$(prefix)/share"
31
- CONFIG["datadir"] = "$(datarootdir)"
32
- CONFIG["sysconfdir"] = "$(prefix)/etc"
33
- CONFIG["sharedstatedir"] = "$(prefix)/com"
34
- CONFIG["localstatedir"] = "$(prefix)/var"
35
- CONFIG["includedir"] = "$(prefix)/include"
36
- CONFIG["oldincludedir"] = "/usr/include"
37
- CONFIG["docdir"] = "$(datarootdir)/doc/$(PACKAGE)"
38
- CONFIG["infodir"] = "$(datarootdir)/info"
39
- CONFIG["htmldir"] = "$(docdir)"
40
- CONFIG["dvidir"] = "$(docdir)"
41
- CONFIG["pdfdir"] = "$(docdir)"
42
- CONFIG["psdir"] = "$(docdir)"
43
- CONFIG["libdir"] = "$(exec_prefix)/lib"
44
- CONFIG["localedir"] = "$(datarootdir)/locale"
45
- CONFIG["mandir"] = "$(datarootdir)/man"
46
- CONFIG["ECHO_C"] = ""
47
- CONFIG["ECHO_N"] = "-n"
48
- CONFIG["ECHO_T"] = ""
49
- CONFIG["LIBS"] = "-lwsock32 "
50
- CONFIG["build_alias"] = "i686-darwin9.2.2"
51
- CONFIG["host_alias"] = "i386-mingw32"
52
- CONFIG["target_alias"] = "i386-mingw32"
53
- CONFIG["MAJOR"] = "1"
54
- CONFIG["MINOR"] = "8"
55
- CONFIG["TEENY"] = "6"
56
- CONFIG["build"] = "i686-pc-darwin9.2.2"
57
- CONFIG["build_cpu"] = "i686"
58
- CONFIG["build_vendor"] = "pc"
59
- CONFIG["build_os"] = "darwin9.2.2"
60
- CONFIG["host"] = "i386-pc-mingw32"
61
- CONFIG["host_cpu"] = "i386"
62
- CONFIG["host_vendor"] = "pc"
63
- CONFIG["host_os"] = "mingw32"
64
- CONFIG["target"] = "i386-pc-mingw32"
65
- CONFIG["target_cpu"] = "i386"
66
- CONFIG["target_vendor"] = "pc"
67
- CONFIG["target_os"] = "mingw32"
68
- CONFIG["CC"] = "i386-mingw32-gcc"
69
- CONFIG["CFLAGS"] = "-g -O2 "
70
- CONFIG["LDFLAGS"] = "-L. "
71
- CONFIG["CPPFLAGS"] = ""
72
- CONFIG["OBJEXT"] = "o"
73
- CONFIG["CPP"] = "i386-mingw32-gcc -E"
74
- CONFIG["GREP"] = "/usr/bin/grep"
75
- CONFIG["EGREP"] = "/usr/bin/grep -E"
76
- CONFIG["GNU_LD"] = "yes"
77
- CONFIG["CPPOUTFILE"] = "-o conftest.i"
78
- CONFIG["OUTFLAG"] = "-o "
79
- CONFIG["YACC"] = "bison -y"
80
- CONFIG["YFLAGS"] = ""
81
- CONFIG["RANLIB"] = "i386-mingw32-ranlib"
82
- CONFIG["AR"] = "i386-mingw32-ar"
83
- CONFIG["AS"] = "i386-mingw32-as"
84
- CONFIG["ASFLAGS"] = ""
85
- CONFIG["NM"] = "i386-mingw32-nm"
86
- CONFIG["WINDRES"] = "i386-mingw32-windres"
87
- CONFIG["DLLWRAP"] = "i386-mingw32-dllwrap"
88
- CONFIG["OBJDUMP"] = "i386-mingw32-objdump"
89
- CONFIG["LN_S"] = "ln -s"
90
- CONFIG["SET_MAKE"] = ""
91
- CONFIG["INSTALL_PROGRAM"] = "$(INSTALL)"
92
- CONFIG["INSTALL_SCRIPT"] = "$(INSTALL)"
93
- CONFIG["INSTALL_DATA"] = "$(INSTALL) -m 644"
94
- CONFIG["RM"] = "rm -f"
95
- CONFIG["CP"] = "cp"
96
- CONFIG["MAKEDIRS"] = "mkdir -p"
97
- CONFIG["ALLOCA"] = ""
98
- CONFIG["DLDFLAGS"] = " -Wl,--enable-auto-image-base,--enable-auto-import,--export-all"
99
- CONFIG["ARCH_FLAG"] = ""
100
- CONFIG["STATIC"] = ""
101
- CONFIG["CCDLFLAGS"] = ""
102
- CONFIG["LDSHARED"] = "i386-mingw32-gcc -shared -s"
103
- CONFIG["DLEXT"] = "so"
104
- CONFIG["DLEXT2"] = "dll"
105
- CONFIG["LIBEXT"] = "a"
106
- CONFIG["LINK_SO"] = ""
107
- CONFIG["LIBPATHFLAG"] = " -L\"%s\""
108
- CONFIG["RPATHFLAG"] = ""
109
- CONFIG["LIBPATHENV"] = ""
110
- CONFIG["TRY_LINK"] = ""
111
- CONFIG["STRIP"] = "strip"
112
- CONFIG["EXTSTATIC"] = ""
113
- CONFIG["setup"] = "Setup"
114
- CONFIG["MINIRUBY"] = "ruby -I#{ENV['HOME']}/pkgs/ruby-1.8.6-p114 -rfake"
115
- CONFIG["PREP"] = "fake.rb"
116
- CONFIG["RUNRUBY"] = "$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`"
117
- CONFIG["EXTOUT"] = ".ext"
118
- CONFIG["ARCHFILE"] = ""
119
- CONFIG["RDOCTARGET"] = ""
120
- CONFIG["XCFLAGS"] = " -DRUBY_EXPORT"
121
- CONFIG["XLDFLAGS"] = " -Wl,--stack,0x02000000"
122
- CONFIG["LIBRUBY_LDSHARED"] = "i386-mingw32-gcc -shared -s"
123
- CONFIG["LIBRUBY_DLDFLAGS"] = " -Wl,--enable-auto-image-base,--enable-auto-import,--export-all -Wl,--out-implib=$(LIBRUBY)"
124
- CONFIG["rubyw_install_name"] = "rubyw"
125
- CONFIG["RUBYW_INSTALL_NAME"] = "rubyw"
126
- CONFIG["LIBRUBY_A"] = "lib$(RUBY_SO_NAME)-static.a"
127
- CONFIG["LIBRUBY_SO"] = "$(RUBY_SO_NAME).dll"
128
- CONFIG["LIBRUBY_ALIASES"] = ""
129
- CONFIG["LIBRUBY"] = "lib$(LIBRUBY_SO).a"
130
- CONFIG["LIBRUBYARG"] = "$(LIBRUBYARG_SHARED)"
131
- CONFIG["LIBRUBYARG_STATIC"] = "-l$(RUBY_SO_NAME)-static"
132
- CONFIG["LIBRUBYARG_SHARED"] = "-l$(RUBY_SO_NAME)"
133
- CONFIG["SOLIBS"] = "$(LIBS)"
134
- CONFIG["DLDLIBS"] = ""
135
- CONFIG["ENABLE_SHARED"] = "yes"
136
- CONFIG["MAINLIBS"] = ""
137
- CONFIG["COMMON_LIBS"] = "m"
138
- CONFIG["COMMON_MACROS"] = ""
139
- CONFIG["COMMON_HEADERS"] = "windows.h winsock.h"
140
- CONFIG["EXPORT_PREFIX"] = ""
141
- CONFIG["MAKEFILES"] = "Makefile GNUmakefile"
142
- CONFIG["arch"] = "i386-mingw32"
143
- CONFIG["sitearch"] = "i386-msvcrt"
144
- CONFIG["sitedir"] = "$(prefix)/lib/ruby/site_ruby"
145
- CONFIG["configure_args"] = " '--host=i386-mingw32' '--target=i386-mingw32' '--build=i686-darwin9.2.2' '--prefix=#{ENV['HOME']}/ruby-mingw32' 'build_alias=i686-darwin9.2.2' 'host_alias=i386-mingw32' 'target_alias=i386-mingw32'"
146
- CONFIG["NROFF"] = "/usr/bin/nroff"
147
- CONFIG["MANTYPE"] = "doc"
148
- CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)"
149
- CONFIG["rubylibdir"] = "$(libdir)/ruby/$(ruby_version)"
150
- CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
151
- CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
152
- CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
153
- CONFIG["topdir"] = File.dirname(__FILE__)
154
- MAKEFILE_CONFIG = {}
155
- CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}
156
- def Config::expand(val, config = CONFIG)
157
- val.gsub!(/\$\$|\$\(([^()]+)\)|\$\{([^{}]+)\}/) do |var|
158
- if !(v = $1 || $2)
159
- '$'
160
- elsif key = config[v = v[/\A[^:]+(?=(?::(.*?)=(.*))?\z)/]]
161
- pat, sub = $1, $2
162
- config[v] = false
163
- Config::expand(key, config)
164
- config[v] = key
165
- key = key.gsub(/#{Regexp.quote(pat)}(?=\s|\z)/n) {sub} if pat
166
- key
167
- else
168
- var
169
- end
170
- end
171
- val
172
- end
173
- CONFIG.each_value do |val|
174
- Config::expand(val)
175
- end
176
- end
177
- RbConfig = Config # compatibility for ruby-1.9
178
- CROSS_COMPILING = nil unless defined? CROSS_COMPILING
@@ -1,178 +0,0 @@
1
-
2
- # This file was created by mkconfig.rb when ruby was built. Any
3
- # changes made to this file will be lost the next time ruby is built.
4
-
5
- module Config
6
- RUBY_VERSION == "1.8.6" or
7
- raise "ruby lib version (1.8.6) doesn't match executable version (#{RUBY_VERSION})"
8
-
9
- TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/1.8/i386-mingw32")
10
- DESTDIR = '' unless defined? DESTDIR
11
- CONFIG = {}
12
- CONFIG["DESTDIR"] = DESTDIR
13
- CONFIG["INSTALL"] = '/opt/local/bin/ginstall -c'
14
- CONFIG["prefix"] = (TOPDIR || DESTDIR + "#{ENV["HOME"]}/ruby-mingw32")
15
- CONFIG["EXEEXT"] = ".exe"
16
- CONFIG["ruby_install_name"] = "ruby"
17
- CONFIG["RUBY_INSTALL_NAME"] = "ruby"
18
- CONFIG["RUBY_SO_NAME"] = "msvcrt-ruby18"
19
- CONFIG["SHELL"] = "/bin/sh"
20
- CONFIG["PATH_SEPARATOR"] = ":"
21
- CONFIG["PACKAGE_NAME"] = ""
22
- CONFIG["PACKAGE_TARNAME"] = ""
23
- CONFIG["PACKAGE_VERSION"] = ""
24
- CONFIG["PACKAGE_STRING"] = ""
25
- CONFIG["PACKAGE_BUGREPORT"] = ""
26
- CONFIG["exec_prefix"] = "$(prefix)"
27
- CONFIG["bindir"] = "$(exec_prefix)/bin"
28
- CONFIG["sbindir"] = "$(exec_prefix)/sbin"
29
- CONFIG["libexecdir"] = "$(exec_prefix)/libexec"
30
- CONFIG["datarootdir"] = "$(prefix)/share"
31
- CONFIG["datadir"] = "$(datarootdir)"
32
- CONFIG["sysconfdir"] = "$(prefix)/etc"
33
- CONFIG["sharedstatedir"] = "$(prefix)/com"
34
- CONFIG["localstatedir"] = "$(prefix)/var"
35
- CONFIG["includedir"] = "$(prefix)/include"
36
- CONFIG["oldincludedir"] = "/usr/include"
37
- CONFIG["docdir"] = "$(datarootdir)/doc/$(PACKAGE)"
38
- CONFIG["infodir"] = "$(datarootdir)/info"
39
- CONFIG["htmldir"] = "$(docdir)"
40
- CONFIG["dvidir"] = "$(docdir)"
41
- CONFIG["pdfdir"] = "$(docdir)"
42
- CONFIG["psdir"] = "$(docdir)"
43
- CONFIG["libdir"] = "$(exec_prefix)/lib"
44
- CONFIG["localedir"] = "$(datarootdir)/locale"
45
- CONFIG["mandir"] = "$(datarootdir)/man"
46
- CONFIG["ECHO_C"] = ""
47
- CONFIG["ECHO_N"] = "-n"
48
- CONFIG["ECHO_T"] = ""
49
- CONFIG["LIBS"] = "-lwsock32 "
50
- CONFIG["build_alias"] = "i686-darwin9.2.2"
51
- CONFIG["host_alias"] = "i386-mingw32"
52
- CONFIG["target_alias"] = "i386-mingw32"
53
- CONFIG["MAJOR"] = "1"
54
- CONFIG["MINOR"] = "8"
55
- CONFIG["TEENY"] = "6"
56
- CONFIG["build"] = "i686-pc-darwin9.2.2"
57
- CONFIG["build_cpu"] = "i686"
58
- CONFIG["build_vendor"] = "pc"
59
- CONFIG["build_os"] = "darwin9.2.2"
60
- CONFIG["host"] = "i386-pc-mingw32"
61
- CONFIG["host_cpu"] = "i386"
62
- CONFIG["host_vendor"] = "pc"
63
- CONFIG["host_os"] = "mingw32"
64
- CONFIG["target"] = "i386-pc-mingw32"
65
- CONFIG["target_cpu"] = "i386"
66
- CONFIG["target_vendor"] = "pc"
67
- CONFIG["target_os"] = "mingw32"
68
- CONFIG["CC"] = "i386-mingw32-gcc"
69
- CONFIG["CFLAGS"] = "-g -O2 "
70
- CONFIG["LDFLAGS"] = "-L. "
71
- CONFIG["CPPFLAGS"] = ""
72
- CONFIG["OBJEXT"] = "o"
73
- CONFIG["CPP"] = "i386-mingw32-gcc -E"
74
- CONFIG["GREP"] = "/usr/bin/grep"
75
- CONFIG["EGREP"] = "/usr/bin/grep -E"
76
- CONFIG["GNU_LD"] = "yes"
77
- CONFIG["CPPOUTFILE"] = "-o conftest.i"
78
- CONFIG["OUTFLAG"] = "-o "
79
- CONFIG["YACC"] = "bison -y"
80
- CONFIG["YFLAGS"] = ""
81
- CONFIG["RANLIB"] = "i386-mingw32-ranlib"
82
- CONFIG["AR"] = "i386-mingw32-ar"
83
- CONFIG["AS"] = "i386-mingw32-as"
84
- CONFIG["ASFLAGS"] = ""
85
- CONFIG["NM"] = "i386-mingw32-nm"
86
- CONFIG["WINDRES"] = "i386-mingw32-windres"
87
- CONFIG["DLLWRAP"] = "i386-mingw32-dllwrap"
88
- CONFIG["OBJDUMP"] = "i386-mingw32-objdump"
89
- CONFIG["LN_S"] = "ln -s"
90
- CONFIG["SET_MAKE"] = ""
91
- CONFIG["INSTALL_PROGRAM"] = "$(INSTALL)"
92
- CONFIG["INSTALL_SCRIPT"] = "$(INSTALL)"
93
- CONFIG["INSTALL_DATA"] = "$(INSTALL) -m 644"
94
- CONFIG["RM"] = "rm -f"
95
- CONFIG["CP"] = "cp"
96
- CONFIG["MAKEDIRS"] = "mkdir -p"
97
- CONFIG["ALLOCA"] = ""
98
- CONFIG["DLDFLAGS"] = " -Wl,--enable-auto-image-base,--enable-auto-import,--export-all"
99
- CONFIG["ARCH_FLAG"] = ""
100
- CONFIG["STATIC"] = ""
101
- CONFIG["CCDLFLAGS"] = ""
102
- CONFIG["LDSHARED"] = "i386-mingw32-gcc -shared -s"
103
- CONFIG["DLEXT"] = "so"
104
- CONFIG["DLEXT2"] = "dll"
105
- CONFIG["LIBEXT"] = "a"
106
- CONFIG["LINK_SO"] = ""
107
- CONFIG["LIBPATHFLAG"] = " -L\"%s\""
108
- CONFIG["RPATHFLAG"] = ""
109
- CONFIG["LIBPATHENV"] = ""
110
- CONFIG["TRY_LINK"] = ""
111
- CONFIG["STRIP"] = "strip"
112
- CONFIG["EXTSTATIC"] = ""
113
- CONFIG["setup"] = "Setup"
114
- CONFIG["MINIRUBY"] = "ruby -I#{ENV['HOME']}/pkgs/ruby-1.8.6-p114 -rfake"
115
- CONFIG["PREP"] = "fake.rb"
116
- CONFIG["RUNRUBY"] = "$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`"
117
- CONFIG["EXTOUT"] = ".ext"
118
- CONFIG["ARCHFILE"] = ""
119
- CONFIG["RDOCTARGET"] = ""
120
- CONFIG["XCFLAGS"] = " -DRUBY_EXPORT"
121
- CONFIG["XLDFLAGS"] = " -Wl,--stack,0x02000000"
122
- CONFIG["LIBRUBY_LDSHARED"] = "i386-mingw32-gcc -shared -s"
123
- CONFIG["LIBRUBY_DLDFLAGS"] = " -Wl,--enable-auto-image-base,--enable-auto-import,--export-all -Wl,--out-implib=$(LIBRUBY)"
124
- CONFIG["rubyw_install_name"] = "rubyw"
125
- CONFIG["RUBYW_INSTALL_NAME"] = "rubyw"
126
- CONFIG["LIBRUBY_A"] = "lib$(RUBY_SO_NAME)-static.a"
127
- CONFIG["LIBRUBY_SO"] = "$(RUBY_SO_NAME).dll"
128
- CONFIG["LIBRUBY_ALIASES"] = ""
129
- CONFIG["LIBRUBY"] = "lib$(LIBRUBY_SO).a"
130
- CONFIG["LIBRUBYARG"] = "$(LIBRUBYARG_SHARED)"
131
- CONFIG["LIBRUBYARG_STATIC"] = "-l$(RUBY_SO_NAME)-static"
132
- CONFIG["LIBRUBYARG_SHARED"] = "-l$(RUBY_SO_NAME)"
133
- CONFIG["SOLIBS"] = "$(LIBS)"
134
- CONFIG["DLDLIBS"] = ""
135
- CONFIG["ENABLE_SHARED"] = "yes"
136
- CONFIG["MAINLIBS"] = ""
137
- CONFIG["COMMON_LIBS"] = "m"
138
- CONFIG["COMMON_MACROS"] = ""
139
- CONFIG["COMMON_HEADERS"] = "windows.h winsock.h"
140
- CONFIG["EXPORT_PREFIX"] = ""
141
- CONFIG["MAKEFILES"] = "Makefile GNUmakefile"
142
- CONFIG["arch"] = "i386-mingw32"
143
- CONFIG["sitearch"] = "i386-msvcrt"
144
- CONFIG["sitedir"] = "$(prefix)/lib/ruby/site_ruby"
145
- CONFIG["configure_args"] = " '--host=i386-mingw32' '--target=i386-mingw32' '--build=i686-darwin9.2.2' '--prefix=#{ENV['HOME']}/ruby-mingw32' 'build_alias=i686-darwin9.2.2' 'host_alias=i386-mingw32' 'target_alias=i386-mingw32'"
146
- CONFIG["NROFF"] = "/usr/bin/nroff"
147
- CONFIG["MANTYPE"] = "doc"
148
- CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)"
149
- CONFIG["rubylibdir"] = "$(libdir)/ruby/$(ruby_version)"
150
- CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
151
- CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
152
- CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
153
- CONFIG["topdir"] = File.dirname(__FILE__)
154
- MAKEFILE_CONFIG = {}
155
- CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}
156
- def Config::expand(val, config = CONFIG)
157
- val.gsub!(/\$\$|\$\(([^()]+)\)|\$\{([^{}]+)\}/) do |var|
158
- if !(v = $1 || $2)
159
- '$'
160
- elsif key = config[v = v[/\A[^:]+(?=(?::(.*?)=(.*))?\z)/]]
161
- pat, sub = $1, $2
162
- config[v] = false
163
- Config::expand(key, config)
164
- config[v] = key
165
- key = key.gsub(/#{Regexp.quote(pat)}(?=\s|\z)/n) {sub} if pat
166
- key
167
- else
168
- var
169
- end
170
- end
171
- val
172
- end
173
- CONFIG.each_value do |val|
174
- Config::expand(val)
175
- end
176
- end
177
- RbConfig = Config # compatibility for ruby-1.9
178
- CROSS_COMPILING = nil unless defined? CROSS_COMPILING