mkrf 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/mkrf.rb +1 -1
- data/lib/mkrf/availability.rb +29 -5
- data/lib/mkrf/generator.rb +19 -8
- metadata +13 -13
data/lib/mkrf.rb
CHANGED
data/lib/mkrf/availability.rb
CHANGED
@@ -26,8 +26,7 @@ module Mkrf
|
|
26
26
|
# * <tt>:headers</tt> -- headers to load by default
|
27
27
|
# * <tt>:compiler</tt> -- which compiler to use when determining availability
|
28
28
|
# * <tt>:includes</tt> -- directories that should be searched for include files
|
29
|
-
def initialize(options = {})
|
30
|
-
|
29
|
+
def initialize(options = {})
|
31
30
|
@loaded_libs = (options[:loaded_libs] || Config::CONFIG["LIBS"].gsub('-l', '').split).to_a
|
32
31
|
@library_paths = (options[:library_paths] || "").to_a
|
33
32
|
# Not sure what COMMON_HEADERS looks like when populated
|
@@ -74,6 +73,7 @@ module Mkrf
|
|
74
73
|
def has_library?(library, function = "main", *paths)
|
75
74
|
logger.info "Checking for library: #{library}"
|
76
75
|
return true if library_already_loaded?(library)
|
76
|
+
return true if RUBY_PLATFORM =~ /mswin/ # TODO: find a way on windows
|
77
77
|
# Should this be only found_library? or a specialized version with
|
78
78
|
# path searching?
|
79
79
|
found_library?(library, function)
|
@@ -139,12 +139,36 @@ module Mkrf
|
|
139
139
|
|
140
140
|
# Returns a string of libraries formatted for compilation
|
141
141
|
def library_compile_string
|
142
|
-
|
142
|
+
if RUBY_PLATFORM =~ /mswin/
|
143
|
+
@loaded_libs.join(' ')
|
144
|
+
else
|
145
|
+
@loaded_libs.collect {|l| "-l#{l}"}.join(' ')
|
146
|
+
end
|
143
147
|
end
|
144
148
|
|
145
149
|
# Returns a string of libraries directories formatted for compilation
|
146
150
|
def library_paths_compile_string
|
147
|
-
|
151
|
+
if RUBY_PLATFORM =~ /mswin/
|
152
|
+
@library_paths.collect {|l| "/libpath:#{l}"}.join(' ')
|
153
|
+
else
|
154
|
+
@library_paths.collect {|l| "-L#{l}"}.join(' ')
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def ldshared_string
|
159
|
+
if RUBY_PLATFORM =~ /mswin/
|
160
|
+
"link -nologo -incremental:no -debug -opt:ref -opt:icf -dll"
|
161
|
+
else
|
162
|
+
Config::CONFIG['LDSHARED']
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
def ld_outfile(filename) # :nodoc:
|
167
|
+
if RUBY_PLATFORM =~ /mswin/
|
168
|
+
"-out:#{filename}"
|
169
|
+
else
|
170
|
+
"-o #{filename}"
|
171
|
+
end
|
148
172
|
end
|
149
173
|
|
150
174
|
# Returns a string of include directories formatted for compilation
|
@@ -243,7 +267,7 @@ module Mkrf
|
|
243
267
|
def header_include_string
|
244
268
|
@headers.collect {|header| "#include <#{header}>"}.join('\n')
|
245
269
|
end
|
246
|
-
|
270
|
+
|
247
271
|
def link_command
|
248
272
|
# This current implementation just splats the library_paths in
|
249
273
|
# unconditionally. Is this problematic?
|
data/lib/mkrf/generator.rb
CHANGED
@@ -153,24 +153,34 @@ module Mkrf
|
|
153
153
|
def defines_compile_string # :nodoc:
|
154
154
|
@available.defines.collect {|define| "-D#{define}"}.join(' ')
|
155
155
|
end
|
156
|
-
|
156
|
+
|
157
|
+
def library_path(path) # :nodoc:
|
158
|
+
if RUBY_PLATFORM =~ /mswin/
|
159
|
+
"-libpath:#{path}"
|
160
|
+
else
|
161
|
+
"-L#{path}"
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
157
165
|
def rakefile_contents # :nodoc:
|
166
|
+
objext = CONFIG['OBJEXT']
|
167
|
+
|
158
168
|
<<-END_RAKEFILE
|
159
169
|
# Generated by mkrf
|
160
170
|
require 'rake/clean'
|
161
171
|
|
162
|
-
CLEAN.include('
|
172
|
+
CLEAN.include('*.#{objext}')
|
163
173
|
CLOBBER.include('#{@extension_name}', 'mkrf.log')
|
164
174
|
|
165
175
|
SRC = FileList[#{sources.join(',')}]
|
166
|
-
OBJ = SRC.ext('
|
176
|
+
OBJ = SRC.ext('#{objext}')
|
167
177
|
CC = '#{@cc}'
|
168
178
|
|
169
179
|
ADDITIONAL_OBJECTS = '#{objects}'
|
170
180
|
|
171
|
-
LDSHARED = "#{
|
181
|
+
LDSHARED = "#{@available.ldshared_string} #{ldshared}"
|
172
182
|
|
173
|
-
LIBPATH = "
|
183
|
+
LIBPATH = "#{library_path(CONFIG['libdir'])} #{@available.library_paths_compile_string}"
|
174
184
|
|
175
185
|
INCLUDES = "#{@available.includes_compile_string}"
|
176
186
|
|
@@ -179,16 +189,17 @@ LIBS = "#{@available.library_compile_string}"
|
|
179
189
|
CFLAGS = "#{cflags} #{defines_compile_string}"
|
180
190
|
|
181
191
|
RUBYARCHDIR = "\#{ENV["RUBYARCHDIR"]}"
|
192
|
+
LIBRUBYARG_SHARED = "#{CONFIG['LIBRUBYARG_SHARED']}"
|
182
193
|
|
183
194
|
task :default => ['#{@extension_name}']
|
184
195
|
|
185
|
-
rule '
|
186
|
-
sh "\#{CC} \#{CFLAGS} \#{INCLUDES} -c
|
196
|
+
rule '.#{objext}' => '.c' do |t|
|
197
|
+
sh "\#{CC} \#{CFLAGS} \#{INCLUDES} -c \#{t.source}"
|
187
198
|
end
|
188
199
|
|
189
200
|
desc "Build this extension"
|
190
201
|
file '#{@extension_name}' => OBJ do
|
191
|
-
sh "\#{LDSHARED} \#{LIBPATH}
|
202
|
+
sh "\#{LDSHARED} \#{LIBPATH} #{@available.ld_outfile(@extension_name)} \#{OBJ} \#{ADDITIONAL_OBJECTS} \#{LIBS} \#{LIBRUBYARG_SHARED}"
|
192
203
|
end
|
193
204
|
|
194
205
|
desc "Install this extension"
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.2
|
3
3
|
specification_version: 1
|
4
4
|
name: mkrf
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.2.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.2.1
|
7
|
+
date: 2007-04-14 00:00:00 +09:00
|
8
8
|
summary: Generate Rakefiles to Build C Extensions to Ruby
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -33,11 +33,11 @@ files:
|
|
33
33
|
- README
|
34
34
|
- CHANGELOG
|
35
35
|
- MIT-LICENSE
|
36
|
-
- lib/mkrf.rb
|
37
36
|
- lib/mkrf
|
38
|
-
- lib/mkrf
|
37
|
+
- lib/mkrf.rb
|
39
38
|
- lib/mkrf/rakehelper.rb
|
40
39
|
- lib/mkrf/generator.rb
|
40
|
+
- lib/mkrf/availability.rb
|
41
41
|
- test/integration
|
42
42
|
- test/sample_files
|
43
43
|
- test/fixtures
|
@@ -96,17 +96,18 @@ files:
|
|
96
96
|
- test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_schema.h
|
97
97
|
- test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_parser_context.c
|
98
98
|
- test/sample_files/syck-0.55/ext
|
99
|
+
- test/sample_files/syck-0.55/tests
|
100
|
+
- test/sample_files/syck-0.55/config
|
101
|
+
- test/sample_files/syck-0.55/lib
|
99
102
|
- test/sample_files/syck-0.55/CHANGELOG
|
100
103
|
- test/sample_files/syck-0.55/configure.in
|
101
104
|
- test/sample_files/syck-0.55/configure
|
102
105
|
- test/sample_files/syck-0.55/TODO
|
103
106
|
- test/sample_files/syck-0.55/config.h
|
104
107
|
- test/sample_files/syck-0.55/config.status
|
105
|
-
- test/sample_files/syck-0.55/tests
|
106
108
|
- test/sample_files/syck-0.55/README
|
107
109
|
- test/sample_files/syck-0.55/aclocal.m4
|
108
110
|
- test/sample_files/syck-0.55/RELEASE
|
109
|
-
- test/sample_files/syck-0.55/config
|
110
111
|
- test/sample_files/syck-0.55/Makefile.am
|
111
112
|
- test/sample_files/syck-0.55/config.h.in
|
112
113
|
- test/sample_files/syck-0.55/README.BYTECODE
|
@@ -114,18 +115,17 @@ files:
|
|
114
115
|
- test/sample_files/syck-0.55/bootstrap
|
115
116
|
- test/sample_files/syck-0.55/README.EXT
|
116
117
|
- test/sample_files/syck-0.55/Makefile
|
117
|
-
- test/sample_files/syck-0.55/lib
|
118
118
|
- test/sample_files/syck-0.55/stamp-h1
|
119
119
|
- test/sample_files/syck-0.55/COPYING
|
120
120
|
- test/sample_files/syck-0.55/ext/ruby
|
121
121
|
- test/sample_files/syck-0.55/ext/ruby/ext
|
122
|
-
- test/sample_files/syck-0.55/ext/ruby/CHANGELOG
|
123
|
-
- test/sample_files/syck-0.55/ext/ruby/install.rb
|
124
122
|
- test/sample_files/syck-0.55/ext/ruby/tests
|
125
|
-
- test/sample_files/syck-0.55/ext/ruby/README
|
126
123
|
- test/sample_files/syck-0.55/ext/ruby/samples
|
127
124
|
- test/sample_files/syck-0.55/ext/ruby/lib
|
128
125
|
- test/sample_files/syck-0.55/ext/ruby/yts
|
126
|
+
- test/sample_files/syck-0.55/ext/ruby/CHANGELOG
|
127
|
+
- test/sample_files/syck-0.55/ext/ruby/install.rb
|
128
|
+
- test/sample_files/syck-0.55/ext/ruby/README
|
129
129
|
- test/sample_files/syck-0.55/ext/ruby/ext/syck
|
130
130
|
- test/sample_files/syck-0.55/ext/ruby/ext/syck/gram.c
|
131
131
|
- test/sample_files/syck-0.55/ext/ruby/ext/syck/bytecode.c
|
@@ -149,9 +149,9 @@ files:
|
|
149
149
|
- test/sample_files/syck-0.55/ext/ruby/samples/okayNews-modules.rb
|
150
150
|
- test/sample_files/syck-0.55/ext/ruby/samples/okayRpc-client.rb
|
151
151
|
- test/sample_files/syck-0.55/ext/ruby/samples/okayRpc-server.rb
|
152
|
-
- test/sample_files/syck-0.55/ext/ruby/lib/yaml.rb
|
153
152
|
- test/sample_files/syck-0.55/ext/ruby/lib/okay
|
154
153
|
- test/sample_files/syck-0.55/ext/ruby/lib/yaml
|
154
|
+
- test/sample_files/syck-0.55/ext/ruby/lib/yaml.rb
|
155
155
|
- test/sample_files/syck-0.55/ext/ruby/lib/okay.rb
|
156
156
|
- test/sample_files/syck-0.55/ext/ruby/lib/yod.rb
|
157
157
|
- test/sample_files/syck-0.55/ext/ruby/lib/okay/rpc.rb
|
@@ -230,9 +230,9 @@ files:
|
|
230
230
|
- test/sample_files/libtrivial/ext
|
231
231
|
- test/sample_files/libtrivial/ext/libtrivial.c
|
232
232
|
- test/sample_files/libtrivial/ext/extconf.rb
|
233
|
+
- test/fixtures/down_a_directory
|
233
234
|
- test/fixtures/stdmkrf.h
|
234
235
|
- test/fixtures/some_binary
|
235
|
-
- test/fixtures/down_a_directory
|
236
236
|
- test/fixtures/down_a_directory/header_down_a_directory.h
|
237
237
|
- test/unit/test_generator.rb
|
238
238
|
- test/unit/test_availability.rb
|