rake-compiler 1.1.0 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +522 -0
- data/lib/rake/extensioncompiler.rb +1 -1
- data/lib/rake/extensiontask.rb +46 -20
- data/lib/rake/javaextensiontask.rb +3 -3
- data/tasks/bin/cross-ruby.rake +79 -110
- metadata +5 -6
- data/History.txt +0 -461
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2df6d32ecd0f965fa8cc4bcf0e9f759bfe8e73ec5bf63f87999c1eef85bbb5b9
|
4
|
+
data.tar.gz: 3d2667098cfec7225cdb964a3a583057cde8e4b4567bf0f55fa3ea536274c1ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f43f6999c6303f0b7bae2557aed5491c3d075a85708fc03df61012c345f7bfdc5388c85570d23d30a50d43d21243704f0b4d0041e251920e73471ff8a62d810c
|
7
|
+
data.tar.gz: 826c274c9cf1a6d5bb4a7e8c46e933e0aa144c18a02f8c5fe42b7f845ee346d150cfd6111a6073d5d98bcd18d645f2632a6dd640d4bb882d7153a5fee9073f00
|
data/History.md
ADDED
@@ -0,0 +1,522 @@
|
|
1
|
+
### 1.1.4 / 2021-12-11
|
2
|
+
|
3
|
+
* Fixes:
|
4
|
+
* Fix a regression bug that installed gem can't be found on cross compile.
|
5
|
+
[#195](https://github.com/rake-compiler/rake-compiler/issues/195) [Reported by Mike Dalessio]
|
6
|
+
|
7
|
+
### 1.1.3 / 2021-12-08
|
8
|
+
|
9
|
+
* Fixes:
|
10
|
+
* Fix a regression bug that wrong install location is used.
|
11
|
+
[#194](https://github.com/rake-compiler/rake-compiler/issues/194) [Reported by Andrew Kane]
|
12
|
+
|
13
|
+
### 1.1.2 / 2021-12-07
|
14
|
+
|
15
|
+
* Changes:
|
16
|
+
* Use .tar.gz instead of .tar.bz2 for Ruby archive.
|
17
|
+
[#179](https://github.com/rake-compiler/rake-compiler/pull/179) [Patch by Masaki Hara]
|
18
|
+
* Stop removing `CC`, `CXX`, `CPPFLAGS` and `LDFLAGS` environment variables for cross-build.
|
19
|
+
[#182](https://github.com/rake-compiler/rake-compiler/pull/182) [Patch by Lars Kanis]
|
20
|
+
* Remove IronRuby related message.
|
21
|
+
[#184](https://github.com/rake-compiler/rake-compiler/pull/184) [Patch by Thomas E Enebo]
|
22
|
+
* Suppress a warning.
|
23
|
+
[#185](https://github.com/rake-compiler/rake-compiler/pull/185) [Patch by Olle Jonsson]
|
24
|
+
* Rename `History.txt` to `History.md`.
|
25
|
+
[#174](https://github.com/rake-compiler/rake-compiler/pull/174) [Patch by MSP-Greg]
|
26
|
+
* Use `make install` instead of copying artifacts manually.
|
27
|
+
[#191](https://github.com/rake-compiler/rake-compiler/pull/191) [Patch by Lars Kanis]
|
28
|
+
|
29
|
+
* Enhancements:
|
30
|
+
* Add support for building cross rubies in parallel.
|
31
|
+
[#169](https://github.com/rake-compiler/rake-compiler/pull/169) [Patch by Lars Kanis]
|
32
|
+
* Use `RAKE_EXTENSION_TASK_NO_NATIVE` environment variable as the default `no_native` value.
|
33
|
+
* Add support for `rake native gem` without `cross`.
|
34
|
+
[#166](https://github.com/rake-compiler/rake-compiler/pull/166) [Patch by Lars Kanis]
|
35
|
+
|
36
|
+
### 1.1.1 / 2020-07-10
|
37
|
+
|
38
|
+
* Changes:
|
39
|
+
* Bump the default Java bytecode to 1.7.
|
40
|
+
[#172](https://github.com/rake-compiler/rake-compiler/pull/172) [Patch by Charles Oliver Nutter]
|
41
|
+
|
42
|
+
* Enhancements:
|
43
|
+
* Add support for finding x86_64 MinGW GCC.
|
44
|
+
[#164](https://github.com/rake-compiler/rake-compiler/pull/164) [Patch by Lars Kanis]
|
45
|
+
* Strip cross compiled shared library automatically.
|
46
|
+
[#165](https://github.com/rake-compiler/rake-compiler/pull/165) [Patch by Lars Kanis]
|
47
|
+
|
48
|
+
### 1.1.0 / 2019-12-25
|
49
|
+
|
50
|
+
* Bugfixes:
|
51
|
+
* Fix a bug that JavaExtenstionTask can't build anything.
|
52
|
+
[#163](https://github.com/rake-compiler/rake-compiler/issues/163) [Reported by Kai Kuchenbecker]
|
53
|
+
|
54
|
+
### 1.0.9 / 2019-12-23
|
55
|
+
|
56
|
+
* Changes:
|
57
|
+
* Use "-Xlint" option for JRuby native extension by default.
|
58
|
+
[#158](https://github.com/rake-compiler/rake-compiler/pull/158) [Patch by Stephen George]
|
59
|
+
|
60
|
+
* Enhancements:
|
61
|
+
* Make customizable compiler Xlint option for JRuby native extension.
|
62
|
+
[#118](https://github.com/rake-compiler/rake-compiler/pull/118) [Patch by Hiroshi Hatake]
|
63
|
+
* Add support for Ruby 2.7.
|
64
|
+
[#161](https://github.com/rake-compiler/rake-compiler/pull/161) [Reported by Masaki Hara]
|
65
|
+
|
66
|
+
### 1.0.8 / 2019-09-21
|
67
|
+
|
68
|
+
* Enhancements:
|
69
|
+
* Added Rake::JavaExtensionTask#encoding= to pass the -encoding option to
|
70
|
+
javac.
|
71
|
+
[#157](https://github.com/rake-compiler/rake-compiler/pull/157) [Patch by Tiago Dias]
|
72
|
+
|
73
|
+
* Bugfixes:
|
74
|
+
* Drop EOL'd rubyforge_project directive from .gemspec.
|
75
|
+
[#155](https://github.com/rake-compiler/rake-compiler/pull/155) [Patch by Olle Jonsson]
|
76
|
+
|
77
|
+
### 1.0.7 / 2019-01-04
|
78
|
+
|
79
|
+
* Bugfixes:
|
80
|
+
* Fix a bug that JRuby class path detection is failed on
|
81
|
+
cross-compilation.
|
82
|
+
[#149](https://github.com/rake-compiler/rake-compiler/issues/149) [#151](https://github.com/rake-compiler/rake-compiler/pull/151) [Reported by Chalupa Petr][Patch by Prashant Vithani]
|
83
|
+
|
84
|
+
### 1.0.6 / 2018-12-23
|
85
|
+
|
86
|
+
* Enhancements:
|
87
|
+
* Stop to make unreleased Ruby installable.
|
88
|
+
[#150](https://github.com/rake-compiler/rake-compiler/issues/150) [Reported by MSP-Greg]
|
89
|
+
|
90
|
+
### 1.0.5 / 2018-08-31
|
91
|
+
|
92
|
+
* Enhancements:
|
93
|
+
* Improve JRuby class pass detection.
|
94
|
+
[#147](https://github.com/rake-compiler/rake-compiler/pull/147) [Patch by Prashant Vithani]
|
95
|
+
* Update the default source and target versions to Java 6.
|
96
|
+
[#148](https://github.com/rake-compiler/rake-compiler/pull/148) [Patch by Prashant Vithani]
|
97
|
+
|
98
|
+
### 1.0.4 / 2017-05-27
|
99
|
+
|
100
|
+
* Enhancements:
|
101
|
+
* Migrate to RSpec 3 from RSpec 2.
|
102
|
+
* Add more tests.
|
103
|
+
[#140](https://github.com/rake-compiler/rake-compiler/pull/140) [Patch by Lars Kanis]
|
104
|
+
* Support C++ source files by default.
|
105
|
+
[#141](https://github.com/rake-compiler/rake-compiler/pull/141) [Patch by Takashi Kokubun]
|
106
|
+
* Suppress warnings.
|
107
|
+
[#142](https://github.com/rake-compiler/rake-compiler/pull/142) [Patch by Akira Matsuda]
|
108
|
+
|
109
|
+
### 1.0.3 / 2016-12-02
|
110
|
+
|
111
|
+
* Enhancements:
|
112
|
+
* Support specifying required Ruby versions.
|
113
|
+
[#137](https://github.com/rake-compiler/rake-compiler/pull/137) [Patch by Lars Kanis]
|
114
|
+
|
115
|
+
### 1.0.2 / 2016-11-13
|
116
|
+
|
117
|
+
* Bugfixes:
|
118
|
+
* Fix Ruby version detection example code in README.
|
119
|
+
[#135](https://github.com/rake-compiler/rake-compiler/pull/135) [Patch by Nicolas Noble]
|
120
|
+
* Fix version detection.
|
121
|
+
[#136](https://github.com/rake-compiler/rake-compiler/pull/136) [Patch by Lars Kanis]
|
122
|
+
|
123
|
+
### 1.0.1 / 2016-06-21
|
124
|
+
|
125
|
+
* Bugfixes:
|
126
|
+
* Add missing dependency.
|
127
|
+
|
128
|
+
### 1.0.0 / 2016-06-21
|
129
|
+
|
130
|
+
* Enhancements:
|
131
|
+
* Really support extension in sub directory.
|
132
|
+
|
133
|
+
### 0.9.9 / 2016-05-10
|
134
|
+
|
135
|
+
* Bugfixes:
|
136
|
+
* Support Symbol as extension name again.
|
137
|
+
[#134](https://github.com/rake-compiler/rake-compiler/pull/134) [Patch by Takashi Kokubun]
|
138
|
+
|
139
|
+
### 0.9.8 / 2016-04-29
|
140
|
+
|
141
|
+
* Enhancements:
|
142
|
+
* Support extension in sub directory.
|
143
|
+
[#128](https://github.com/rake-compiler/rake-compiler/pull/128), [#129](https://github.com/rake-compiler/rake-compiler/pull/129) [Patch by Kenta Murata]
|
144
|
+
|
145
|
+
### 0.9.7 / 2016-03-16
|
146
|
+
|
147
|
+
* Bugfixes:
|
148
|
+
* May fix "make" detection on Windows.
|
149
|
+
[#123](https://github.com/rake-compiler/rake-compiler/issues/123) [Reported by Aaron Stone]
|
150
|
+
|
151
|
+
### 0.9.6 / 2016-03-04
|
152
|
+
|
153
|
+
* Enhancements:
|
154
|
+
* Add more descriptions into README.
|
155
|
+
Closes [#105](https://github.com/rake-compiler/rake-compiler/pull/105) [Patch by Aaron Stone]
|
156
|
+
* Remove needless executable bits.
|
157
|
+
Closes [#107](https://github.com/rake-compiler/rake-compiler/pull/107) [Patch by Thibault Jouan]
|
158
|
+
* Update .gitignore.
|
159
|
+
Closes [#108](https://github.com/rake-compiler/rake-compiler/pull/108) [Patch by Thibault Jouan]
|
160
|
+
* Improve "make" detection on some platforms such as FreeBSD.
|
161
|
+
Closes [#109](https://github.com/rake-compiler/rake-compiler/pull/109) [Patch by Thibault Jouan]
|
162
|
+
* Enable cucumber steps for POSIX on *BSD.
|
163
|
+
Closes [#110](https://github.com/rake-compiler/rake-compiler/pull/110) [Patch by Thibault Jouan]
|
164
|
+
* Stop to build bundled extensions.
|
165
|
+
* Add description about CLI option into README.
|
166
|
+
Closes [#115](https://github.com/rake-compiler/rake-compiler/pull/115) [Patch by Richard Michael]
|
167
|
+
* Update description about using rake-compiler on virtual machine in
|
168
|
+
README.
|
169
|
+
Closes [#116](https://github.com/rake-compiler/rake-compiler/pull/116), [#117](https://github.com/rake-compiler/rake-compiler/pull/117) [Patch by Lars Kanis]
|
170
|
+
* Update fake mechanism to be compatible with Bundler.
|
171
|
+
Closes [#121](https://github.com/rake-compiler/rake-compiler/pull/121) [Patch by Lars Kanis]
|
172
|
+
|
173
|
+
* Bugfixes:
|
174
|
+
* Fix typos in README.
|
175
|
+
Closes [#102](https://github.com/rake-compiler/rake-compiler/pull/102), [#103](https://github.com/rake-compiler/rake-compiler/pull/103) [Patch by Robert Fletcher]
|
176
|
+
|
177
|
+
### 0.9.5 / 2015-01-03
|
178
|
+
|
179
|
+
* Enhancements:
|
180
|
+
* Support adding bundled files in cross_compiling block.
|
181
|
+
Closes [#100](https://github.com/rake-compiler/rake-compiler/pull/100) [Patch by Aaron Stone]
|
182
|
+
|
183
|
+
### 0.9.4 / 2014-12-28
|
184
|
+
|
185
|
+
* Notes:
|
186
|
+
* Change maintainer to Kouhei Sutou from Luis Lavena.
|
187
|
+
Thanks Luis Lavena for your great works!
|
188
|
+
* Change repository to https://github.com/rake-compiler/rake-compiler
|
189
|
+
from https://github.com/luislavena/rake-compiler .
|
190
|
+
|
191
|
+
* Bugfixes:
|
192
|
+
* Loose RubyGems dependency a little bit to ease old Debian/Ubuntu.
|
193
|
+
Closes [#93](https://github.com/rake-compiler/rake-compiler/issues/93)
|
194
|
+
|
195
|
+
### 0.9.3 / 2014-08-03
|
196
|
+
|
197
|
+
* Bugfixes:
|
198
|
+
* Fix specs to run (and pass) on Ruby 2.1 and beyond.
|
199
|
+
Pull [#94](https://github.com/rake-compiler/rake-compiler/pull/94) [hggh]
|
200
|
+
|
201
|
+
### 0.9.2 / 2013-11-14
|
202
|
+
|
203
|
+
* Bugfixes:
|
204
|
+
* Pre-load resolver to avoid Bundler blow up during cross-compilation
|
205
|
+
Pull [#83](https://github.com/rake-compiler/rake-compiler/pull/83) [larskanis]
|
206
|
+
|
207
|
+
### 0.9.1 / 2013-08-03
|
208
|
+
|
209
|
+
* Bugfixes:
|
210
|
+
* Restore compatibility with RubyGems platforms for cross-compilation
|
211
|
+
(i386-mingw32 and x86-mingw32 are the same and supported)
|
212
|
+
|
213
|
+
### 0.9.0 / 2013-08-03
|
214
|
+
|
215
|
+
* Enhancements:
|
216
|
+
* Add support for cross-builds and multiple platforms (x86/x64).
|
217
|
+
Pull [#74](https://github.com/rake-compiler/rake-compiler/pull/74) [larskanis]
|
218
|
+
|
219
|
+
```text
|
220
|
+
$ rake-compiler cross-ruby VERSION=1.8.7-p371
|
221
|
+
$ rake-compiler cross-ruby VERSION=1.9.3-p392
|
222
|
+
$ rake-compiler cross-ruby VERSION=2.0.0-p0
|
223
|
+
$ rake-compiler cross-ruby VERSION=2.0.0-p0 HOST=x86_64-w64-mingw32
|
224
|
+
$ rake cross compile RUBY_CC_VERSION=1.8.7:1.9.3:2.0.0
|
225
|
+
|
226
|
+
# Rakefile
|
227
|
+
ext.cross_platform = %w[i386-mingw32 x64-mingw32]
|
228
|
+
```
|
229
|
+
|
230
|
+
* Support for cross-platform specific options. Pull [#74](https://github.com/rake-compiler/rake-compiler/pull/74) [larskanis]
|
231
|
+
|
232
|
+
```ruby
|
233
|
+
# Rakefile
|
234
|
+
ext.cross_config_options << "--with-common-option"
|
235
|
+
ext.cross_config_options << {"x64-mingw32" => "--enable-64bits"}
|
236
|
+
```
|
237
|
+
|
238
|
+
* Bugfixes:
|
239
|
+
* Correct fat-gems support caused by RubyGems issues. Pull [#76](https://github.com/rake-compiler/rake-compiler/pull/76) [knu]
|
240
|
+
|
241
|
+
* Deprecations:
|
242
|
+
* Requires minimum Ruby 1.8.7 and RubyGems 1.8.25
|
243
|
+
* Usage of 'i386-mswin32' needs to be changed to 'i386-mswin32-60'
|
244
|
+
|
245
|
+
### 0.9.0.pre.1 / 2013-05-05
|
246
|
+
|
247
|
+
See 0.9.0 changes.
|
248
|
+
|
249
|
+
### 0.8.3 / 2013-02-16
|
250
|
+
|
251
|
+
* Bugfixes:
|
252
|
+
* Support FreeBSD 'mingw32-gcc' cross compiler. Closes [#72](https://github.com/rake-compiler/rake-compiler/pull/72) [knu]
|
253
|
+
|
254
|
+
### 0.8.2 / 2013-01-11
|
255
|
+
|
256
|
+
* Bugfixes:
|
257
|
+
* Unset CC, LDFLAGS and CPPFLAGS prior cross-compiling. Closes [#55](https://github.com/rake-compiler/rake-compiler/issues/55)
|
258
|
+
|
259
|
+
### 0.8.1 / 2012-04-15
|
260
|
+
|
261
|
+
* Bugfixes:
|
262
|
+
* Raise error when either make or gmake could be found. Closes [#53](https://github.com/rake-compiler/rake-compiler/issues/53), [#54](https://github.com/rake-compiler/rake-compiler/pull/54)
|
263
|
+
|
264
|
+
### 0.8.0 / 2012-01-08
|
265
|
+
|
266
|
+
* Enhancements:
|
267
|
+
* Invocation from command line now support extra options similar to RubyGems.
|
268
|
+
Closes [#4](https://github.com/rake-compiler/rake-compiler/issues/4) from Pull [#47](https://github.com/rake-compiler/rake-compiler/pull/47) [jonforums]
|
269
|
+
|
270
|
+
$ rake compile -- --with-opt-dir=/opt/local
|
271
|
+
|
272
|
+
* Bugfixes:
|
273
|
+
* Only emit cross-compilation warnings for C when `cross` is invoked.
|
274
|
+
Closes [#16](https://github.com/rake-compiler/rake-compiler/issues/16) from Pull [#48](https://github.com/rake-compiler/rake-compiler/pull/48) [mvz]
|
275
|
+
* Only emit warnings when invoking cross-compilation tasks for JRuby.
|
276
|
+
Pull [#45](https://github.com/rake-compiler/rake-compiler/pull/45) [jfirebaugh]
|
277
|
+
* Use x86 MinGW cross-compiler. Pull [#49](https://github.com/rake-compiler/rake-compiler/pull/49) [larskanis]
|
278
|
+
|
279
|
+
### 0.7.9 / 2011-06-08
|
280
|
+
|
281
|
+
* Enhancements:
|
282
|
+
* Consistently use RubyGems features available since version 1.3.2 and avoid
|
283
|
+
deprecation warnings with Rake > 0.8.7.
|
284
|
+
|
285
|
+
* Bugfixes:
|
286
|
+
* Use correct platform in fake.rb. Pull [#39](https://github.com/rake-compiler/rake-compiler/pull/39) [kou]
|
287
|
+
* Workaround Gem::Specification and Gem::PackageTask limitations. Closes [#43](https://github.com/rake-compiler/rake-compiler/issues/43)
|
288
|
+
|
289
|
+
### 0.7.8 / 2011-04-26
|
290
|
+
|
291
|
+
* Enhancements:
|
292
|
+
* Bump default cross-ruby version to 1.8.7-p334.
|
293
|
+
* ExtensionTask now support config_includes to load additional directories.
|
294
|
+
[jfinkhaeuser]
|
295
|
+
|
296
|
+
```ruby
|
297
|
+
Rake::ExtensionTask.new("myext", GEM_SPEC) do |ext|
|
298
|
+
ext.config_includes << File.expand_path("my", "custom", "dir")
|
299
|
+
end
|
300
|
+
```
|
301
|
+
|
302
|
+
* Bugfixes:
|
303
|
+
* Warn if compiled files exists in extension's source directory. Closes [#35](https://github.com/rake-compiler/rake-compiler/issues/35)
|
304
|
+
* Workaround issue with WINE using proper build option. Closes [#37](https://github.com/rake-compiler/rake-compiler/issues/37)
|
305
|
+
* Use FileUtils#install instead of cp. Closes [#33](https://github.com/rake-compiler/rake-compiler/issues/33) [Eric Wong]
|
306
|
+
* Update README instructions for OSX. Closes [#29](https://github.com/rake-compiler/rake-compiler/issues/29) [tmm1]
|
307
|
+
|
308
|
+
### 0.7.7 / 2011-04-04
|
309
|
+
|
310
|
+
* Bugfixes:
|
311
|
+
* Use Winsock2 as default to match Ruby 1.9.2 library linking.
|
312
|
+
|
313
|
+
### 0.7.6 / 2011-02-04
|
314
|
+
|
315
|
+
* Bugfixes:
|
316
|
+
* Prefer Psych over Syck for YAML parsing on Ruby 1.9.2. [tenderlove]
|
317
|
+
|
318
|
+
### 0.7.5 / 2010-11-25
|
319
|
+
|
320
|
+
* Enhancements:
|
321
|
+
* Promoted stable version for cross-compilation to 1.8.6-p398. Closes [#19](https://github.com/rake-compiler/rake-compiler/issues/19)
|
322
|
+
|
323
|
+
* Bugfixes:
|
324
|
+
* Generate a fake.rb compatible with Ruby 1.9.2. Closes [#25](https://github.com/rake-compiler/rake-compiler/issues/25)
|
325
|
+
* fake.rb will not try to mimic Ruby's own fake to the letter. Closes [#28](https://github.com/rake-compiler/rake-compiler/issues/28)
|
326
|
+
* Expand symlinks for tmp_dir. Closes [#24](https://github.com/rake-compiler/rake-compiler/issues/24)
|
327
|
+
* Silence make output during rake-compiler invocation.
|
328
|
+
* Usage of Gem.ruby instead of RbConfig ruby_install_name
|
329
|
+
This solve issues with ruby vs. ruby.exe and jruby.exe
|
330
|
+
|
331
|
+
* Experimental:
|
332
|
+
* Allow setting of HOST during cross-compilation. This enable usage
|
333
|
+
of mingw-w64 compiler and not the first one found in the PATH.
|
334
|
+
|
335
|
+
rake-compiler cross-ruby VERSION=1.9.2-p0 HOST=i686-w64-mingw32
|
336
|
+
rake-compiler cross-ruby HOST=i386-mingw32 (OSX mingw32 port)
|
337
|
+
rake-compiler cross-ruby HOST=i586-pc-mingw32 (Debian/Ubuntu mingw32)
|
338
|
+
|
339
|
+
### 0.7.1 / 2010-08-07
|
340
|
+
|
341
|
+
* Bugfixes:
|
342
|
+
* Update gem files to make "gem install -t" works. Closes [#14](https://github.com/rake-compiler/rake-compiler/issues/14)
|
343
|
+
* Update mocks to work under 1.8.7. Closes [#15](https://github.com/rake-compiler/rake-compiler/issues/15) [luisparravicini]
|
344
|
+
* Do not allow cross-ruby be executed under Windows. Closes [#22](https://github.com/rake-compiler/rake-compiler/issues/22)
|
345
|
+
|
346
|
+
* Experimental:
|
347
|
+
* Allow JRuby to compile C extensions [timfel].
|
348
|
+
It is now possible compile C extensions using latest JRuby. Offered
|
349
|
+
in experimental mode since JRuby cext hasn't been officially released.
|
350
|
+
|
351
|
+
### 0.7.0 / 2009-12-08
|
352
|
+
|
353
|
+
* Enhancements
|
354
|
+
* Allow generation of JRuby extensions. Thanks to Alex Coles (myabc) for the
|
355
|
+
contribution.
|
356
|
+
This will allow, with proper JDK tools, cross compilation of JRuby gems
|
357
|
+
from MRI.
|
358
|
+
|
359
|
+
```ruby
|
360
|
+
Rake::JavaExtensionTask.new('my_java_extension', GEM_SPEC) do |ext|
|
361
|
+
# most of ExtensionTask options can be used
|
362
|
+
# plus, java_compiling:
|
363
|
+
ext.java_compiling do |gem_spec|
|
364
|
+
gem_spec.post_install_message = "This is a native JRuby gem!"
|
365
|
+
end
|
366
|
+
end
|
367
|
+
```
|
368
|
+
|
369
|
+
Please note that cross-compiling JRuby gems requires either JRUBY_HOME or
|
370
|
+
JRUBY_PARENT_CLASSPATH environment variables being properly set.
|
371
|
+
|
372
|
+
* Allow alteration of the Gem Specification when cross compiling. Closes [#3](https://github.com/rake-compiler/rake-compiler/issues/3)
|
373
|
+
This is useful to indicate a custom requirement message, like DLLs
|
374
|
+
installation or similar.
|
375
|
+
|
376
|
+
```ruby
|
377
|
+
Rake::ExtensionTask.new('my_extension', GEM_SPEC) do |ext|
|
378
|
+
ext.cross_compile = true
|
379
|
+
# ...
|
380
|
+
ext.cross_compiling do |gem_spec|
|
381
|
+
gem_spec.post_install_message = "You've installed a binary version of this gem"
|
382
|
+
end
|
383
|
+
end
|
384
|
+
```
|
385
|
+
|
386
|
+
* Bugfixes
|
387
|
+
* Detect GNU make independently of distribution based naming.
|
388
|
+
Thanks to flori for patches.
|
389
|
+
* Usage of #dup to duplicate gemspec instead of YAML dumping.
|
390
|
+
* No longer support Ruby older than 1.8.6
|
391
|
+
* No longer support RubyGems older than 1.3.5
|
392
|
+
* Force definition of binary directory and executables. Closes [#11](https://github.com/rake-compiler/rake-compiler/issues/11)
|
393
|
+
* Workaround path with spaces issues using relative paths. Closes [#6](https://github.com/rake-compiler/rake-compiler/issues/6)
|
394
|
+
* Removed gemspec, GitHub gems no more
|
395
|
+
|
396
|
+
* Known issues
|
397
|
+
* Usage of rake-compiler under projects with Jeweler requires some tweaks
|
398
|
+
Please read issue 73) for Jeweler:
|
399
|
+
http://github.com/technicalpickles/jeweler/issues/73
|
400
|
+
|
401
|
+
For a workaround, look here:
|
402
|
+
http://gist.github.com/251663
|
403
|
+
|
404
|
+
### 0.6.0 / 2009-07-25
|
405
|
+
|
406
|
+
* Enhancements
|
407
|
+
* Implemented 'fat-binaries' generation for cross compiling
|
408
|
+
(for now). Thanks to Aaron Patterson for the suggestion and
|
409
|
+
original idea.
|
410
|
+
|
411
|
+
rake cross native gem RUBY_CC_VERSION=1.8.6:1.9.1
|
412
|
+
|
413
|
+
Will package extensions for 1.8 and 1.9 versions of Ruby.
|
414
|
+
* Can now cross compile extensions for 1.9 using 1.8.x as base.
|
415
|
+
Be warned: works from 1.8 to 1.9, but not if your default ruby is 1.9
|
416
|
+
|
417
|
+
rake cross compile RUBY_CC_VERSION=1.9.1
|
418
|
+
|
419
|
+
* Allow simultaneous versions of Ruby to compile extensions.
|
420
|
+
This change allow 1.8.x compiles co-exist with 1.9.x ones
|
421
|
+
and don't override each other.
|
422
|
+
|
423
|
+
Please perform <tt>rake clobber</tt> prior compiling again.
|
424
|
+
* Allow optional source file URL for cross-compile tasks.
|
425
|
+
(Thanks to deepj for the patches)
|
426
|
+
|
427
|
+
rake-compiler cross-ruby VERSION=1.9.1-p0 SOURCE=http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2
|
428
|
+
|
429
|
+
* Bugfixes
|
430
|
+
* Removed strict versioning for gems since it clash with fat binaries.
|
431
|
+
From now on, if your gem only targets a specific version of Ruby, please
|
432
|
+
indicate it in the Gem::Specification (<tt>required_ruby_version</tt>)
|
433
|
+
|
434
|
+
### 0.5.0 / 2009-04-25
|
435
|
+
|
436
|
+
* Enhancements
|
437
|
+
* Allow generation of multiple gems for Windows (EXPERIMENTAL)
|
438
|
+
This allows build gems for both VC6 and MinGW builts of Ruby
|
439
|
+
(Thanks to Jonathan Stott for the suggestion)
|
440
|
+
|
441
|
+
```ruby
|
442
|
+
Rake::ExtensionTask.new('my_extension', GEM_SPEC) do |ext|
|
443
|
+
ext.cross_compile = true
|
444
|
+
ext.cross_platform = ['i386-mswin32', 'i386-mingw32']
|
445
|
+
end
|
446
|
+
```
|
447
|
+
|
448
|
+
### 0.4.1 / 2009-04-09
|
449
|
+
|
450
|
+
* Enhancements
|
451
|
+
* Target specific versions of Ruby when generating binaries.
|
452
|
+
This avoids installing a 1.8.x binary gem in 1.9.x and viceversa.
|
453
|
+
(Thanks to Aaron Patterson for the patches)
|
454
|
+
|
455
|
+
* Bugfixes
|
456
|
+
* No longer raises error if rake-compiler configuration is missing.
|
457
|
+
Not all users of a project would have it installed.
|
458
|
+
(Thanks to Aaron Patterson for the patch)
|
459
|
+
|
460
|
+
### 0.4.0 / 2009-04-03
|
461
|
+
|
462
|
+
* Enhancements
|
463
|
+
* Bended the convention for extension folder.
|
464
|
+
Defining <tt>ext_dir</tt> for custom extension location.
|
465
|
+
|
466
|
+
```ruby
|
467
|
+
Rake::ExtensionTask.new('my_extension') do |ext|
|
468
|
+
ext.ext_dir = 'custom/location' # look into custom/location
|
469
|
+
end # instead of ext/my_extension
|
470
|
+
```
|
471
|
+
|
472
|
+
* Better detection of mingw target across Linux/OSX.
|
473
|
+
Exposed it as Rake::ExtensionCompiler
|
474
|
+
* Display list of available tasks when calling rake-compiler script
|
475
|
+
* Track Ruby full versioning (x.y.z).
|
476
|
+
This will help the compilation of extensions targetting 1.8.6/7 and 1.9.1
|
477
|
+
|
478
|
+
* Bugfixes
|
479
|
+
* Better output of Rake development tasks (Thanks to Luis Parravicini).
|
480
|
+
* Proper usage of Gem::Platform for native gems (Thanks to Dirkjan Bussink).
|
481
|
+
* Don't use autoload for YAML (present problems with Ruby 1.9.1).
|
482
|
+
|
483
|
+
### 0.3.1 / 2009-01-09
|
484
|
+
|
485
|
+
* Enhancements
|
486
|
+
* Download cross-ruby source code using HTTP instead of FTP.
|
487
|
+
* Disabled Tcl/Tk extension building on cross-ruby (helps with 1.9).
|
488
|
+
|
489
|
+
* Bugfixes
|
490
|
+
* Workaround bug introduced by lack of Gem::Specification cloning. Fixes DM LH #757.
|
491
|
+
* Use proper binary extension on OSX (reported by Dirkjan Bussink).
|
492
|
+
* Ensure lib/binary task is defined prior clear of requisites.
|
493
|
+
|
494
|
+
### 0.3.0 / 2008-12-07
|
495
|
+
|
496
|
+
* New features
|
497
|
+
* Let you specify the Ruby version used for cross compilation instead
|
498
|
+
of default one.
|
499
|
+
|
500
|
+
rake cross compile RUBY_CC_VERSION=1.8
|
501
|
+
|
502
|
+
* Enhancements
|
503
|
+
* Properly update rake-compiler configuration when new version is installed.
|
504
|
+
* Automated release process to RubyForge, yay!
|
505
|
+
|
506
|
+
* Bugfixes
|
507
|
+
* Corrected documentation to reflect the available options
|
508
|
+
|
509
|
+
### 0.2.1 / 2008-11-30
|
510
|
+
|
511
|
+
* New features
|
512
|
+
|
513
|
+
* Allow cross compilation (cross compile) using mingw32 on Linux or OSX.
|
514
|
+
* Allow packaging of gems for Windows on Linux or OSX.
|
515
|
+
|
516
|
+
* Enhancements
|
517
|
+
|
518
|
+
* Made generation of extensions safe and target folders per-platform
|
519
|
+
|
520
|
+
* Bugfixes
|
521
|
+
|
522
|
+
* Ensure binaries for the specific platform are copied before packaging.
|
@@ -37,7 +37,7 @@ module Rake
|
|
37
37
|
paths = ENV['PATH'].split(File::PATH_SEPARATOR)
|
38
38
|
|
39
39
|
# the pattern to look into (captures *nix and windows executables)
|
40
|
-
pattern = "{mingw32-,i?86*mingw*}gcc{,.*}"
|
40
|
+
pattern = "{mingw32-,i?86*mingw*,x86*mingw*}gcc{,.*}"
|
41
41
|
|
42
42
|
@mingw_gcc_executable = paths.find do |path|
|
43
43
|
# cleanup paths before globbing
|
data/lib/rake/extensiontask.rb
CHANGED
@@ -23,9 +23,11 @@ module Rake
|
|
23
23
|
@cross_compile = false
|
24
24
|
@cross_config_options = []
|
25
25
|
@cross_compiling = nil
|
26
|
-
@no_native =
|
26
|
+
@no_native = (ENV["RAKE_EXTENSION_TASK_NO_NATIVE"] == "true")
|
27
27
|
@config_includes = []
|
28
|
-
|
28
|
+
# Default to an empty list of ruby versions for each platform
|
29
|
+
@ruby_versions_per_platform = Hash.new { |h, k| h[k] = [] }
|
30
|
+
@make = nil
|
29
31
|
end
|
30
32
|
|
31
33
|
def cross_platform
|
@@ -45,15 +47,6 @@ module Rake
|
|
45
47
|
end
|
46
48
|
|
47
49
|
def define
|
48
|
-
if (defined?(RUBY_ENGINE) && RUBY_ENGINE == 'ironruby')
|
49
|
-
warn_once <<-EOF
|
50
|
-
WARNING: You're attempting to (cross-)compile C extensions from a platform
|
51
|
-
(#{RUBY_ENGINE}) that does not support native extensions or mkmf.rb.
|
52
|
-
Rerun `rake` under MRI Ruby 1.8.x/1.9.x to cross/native compile.
|
53
|
-
EOF
|
54
|
-
return
|
55
|
-
end
|
56
|
-
|
57
50
|
super
|
58
51
|
|
59
52
|
unless compiled_files.empty?
|
@@ -123,6 +116,7 @@ Rerun `rake` under MRI Ruby 1.8.x/1.9.x to cross/native compile.
|
|
123
116
|
tmp_path = "#{@tmp_dir}/#{platf}/#{@name}/#{ruby_ver}"
|
124
117
|
stage_path = "#{@tmp_dir}/#{platf}/stage"
|
125
118
|
|
119
|
+
siteconf_path = "#{tmp_path}/.rake-compiler-siteconf.rb"
|
126
120
|
tmp_binary_path = "#{tmp_path}/#{binary_path}"
|
127
121
|
tmp_binary_dir_path = File.dirname(tmp_binary_path)
|
128
122
|
stage_binary_path = "#{stage_path}/#{lib_path}/#{binary_path}"
|
@@ -140,10 +134,27 @@ Rerun `rake` under MRI Ruby 1.8.x/1.9.x to cross/native compile.
|
|
140
134
|
directory lib_binary_dir_path
|
141
135
|
directory stage_binary_dir_path
|
142
136
|
|
137
|
+
directory File.dirname(siteconf_path)
|
138
|
+
# Set paths for "make install" destinations
|
139
|
+
file siteconf_path => File.dirname(siteconf_path) do
|
140
|
+
File.open(siteconf_path, "w") do |siteconf|
|
141
|
+
siteconf.puts "require 'rbconfig'"
|
142
|
+
siteconf.puts "require 'mkmf'"
|
143
|
+
siteconf.puts "dest_path = mkintpath(#{File.expand_path(lib_path).dump})"
|
144
|
+
%w[sitearchdir sitelibdir].each do |dir|
|
145
|
+
siteconf.puts "RbConfig::MAKEFILE_CONFIG['#{dir}'] = dest_path"
|
146
|
+
siteconf.puts "RbConfig::CONFIG['#{dir}'] = dest_path"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
143
151
|
# copy binary from temporary location to final lib
|
144
152
|
# tmp/extension_name/extension_name.{so,bundle} => lib/
|
145
|
-
task "copy:#{@name}:#{platf}:#{ruby_ver}" => [lib_binary_dir_path, tmp_binary_path] do
|
146
|
-
install
|
153
|
+
task "copy:#{@name}:#{platf}:#{ruby_ver}" => [lib_binary_dir_path, tmp_binary_path, "#{tmp_path}/Makefile"] do
|
154
|
+
# install in lib for native platform only
|
155
|
+
unless for_platform
|
156
|
+
sh "#{make} install target_prefix=", chdir: tmp_path
|
157
|
+
end
|
147
158
|
end
|
148
159
|
# copy binary from temporary location to staging directory
|
149
160
|
task "copy:#{@name}:#{platf}:#{ruby_ver}" => [stage_binary_dir_path, tmp_binary_path] do
|
@@ -172,12 +183,12 @@ Java extension should be preferred.
|
|
172
183
|
|
173
184
|
# makefile depends of tmp_dir and config_script
|
174
185
|
# tmp/extension_name/Makefile
|
175
|
-
file "#{tmp_path}/Makefile" => [tmp_path, extconf] do |t|
|
186
|
+
file "#{tmp_path}/Makefile" => [tmp_path, extconf, siteconf_path] do |t|
|
176
187
|
options = @config_options.dup
|
177
188
|
|
178
189
|
# include current directory
|
179
190
|
include_dirs = ['.'].concat(@config_includes).uniq.join(File::PATH_SEPARATOR)
|
180
|
-
cmd = [Gem.ruby, "-I#{include_dirs}"]
|
191
|
+
cmd = [Gem.ruby, "-I#{include_dirs}", "-r#{File.basename(siteconf_path)}"]
|
181
192
|
|
182
193
|
# build a relative path to extconf script
|
183
194
|
abs_tmp_path = (Pathname.new(Dir.pwd) + tmp_path).realpath
|
@@ -242,6 +253,9 @@ Java extension should be preferred.
|
|
242
253
|
# lib_path
|
243
254
|
lib_path = lib_dir
|
244
255
|
|
256
|
+
# Update compiled platform/version combinations
|
257
|
+
@ruby_versions_per_platform[platf] << ruby_ver
|
258
|
+
|
245
259
|
# create 'native:gem_name' and chain it to 'native' task
|
246
260
|
unless Rake::Task.task_defined?("native:#{@gem_spec.name}:#{platf}")
|
247
261
|
task "native:#{@gem_spec.name}:#{platf}" do |t|
|
@@ -254,7 +268,7 @@ Java extension should be preferred.
|
|
254
268
|
spec.platform = Gem::Platform.new(platf)
|
255
269
|
|
256
270
|
# set ruby version constraints
|
257
|
-
ruby_versions = @ruby_versions_per_platform[platf]
|
271
|
+
ruby_versions = @ruby_versions_per_platform[platf]
|
258
272
|
sorted_ruby_versions = ruby_versions.sort_by do |ruby_version|
|
259
273
|
ruby_version.split(".").collect(&:to_i)
|
260
274
|
end
|
@@ -357,8 +371,7 @@ Java extension should be preferred.
|
|
357
371
|
end
|
358
372
|
|
359
373
|
# Update cross compiled platform/version combinations
|
360
|
-
|
361
|
-
ruby_versions << version
|
374
|
+
@ruby_versions_per_platform[for_platform] << version
|
362
375
|
|
363
376
|
define_cross_platform_tasks_with_version(for_platform, version)
|
364
377
|
|
@@ -403,8 +416,21 @@ Java extension should be preferred.
|
|
403
416
|
# genearte fake.rb for different ruby versions
|
404
417
|
file "#{tmp_path}/fake.rb" => [rbconfig_file] do |t|
|
405
418
|
File.open(t.name, 'w') do |f|
|
406
|
-
|
407
|
-
|
419
|
+
# Keep the original RbConfig::CONFIG["ENABLE_SHARED"] to use
|
420
|
+
# the same RubyGems extension directory. See also
|
421
|
+
# Gem::BasicSpecificaion#extenions_dir and
|
422
|
+
# Gem.extension_api_version.
|
423
|
+
#
|
424
|
+
# if RbConfig::CONFIG["ENABLE_SHARED"] == "no"
|
425
|
+
# "extensions/x86_64-linux/2.5.0-static"
|
426
|
+
# else
|
427
|
+
# "extensions/x86_64-linux/2.5.0"
|
428
|
+
# end
|
429
|
+
f.puts("require 'rbconfig'")
|
430
|
+
f.puts("original_enable_shared = RbConfig::CONFIG['ENABLE_SHARED']")
|
431
|
+
f.puts(fake_rb(for_platform, ruby_ver))
|
432
|
+
f.puts(File.read(t.prerequisites.first))
|
433
|
+
f.puts("RbConfig::CONFIG['ENABLE_SHARED'] = original_enable_shared")
|
408
434
|
end
|
409
435
|
end
|
410
436
|
|