1
- begin
2
- require 'rubygems/package_task'
3
- rescue LoadError
4
- end
1
+ require "bundler/gem_tasks"
5
2
6
3
require 'rbconfig'
7
4
include RbConfig
8
5
9
- require 'rake/clean'
10
- CLOBBER . include 'doc' , 'Gemfile.lock'
11
- CLEAN . include FileList [ 'diagrams/*.*' ] , 'doc' , 'coverage' , 'tmp' ,
12
- FileList [ "ext/**/{Makefile,mkmf.log}" ] , 'build' , 'dist' , FileList [ '**/*.rbc' ] ,
13
- FileList [ "{ext,lib}/**/*.{so,bundle,#{ CONFIG [ 'DLEXT' ] } ,o,obj,pdb,lib,manifest,exp,def,jar,class,dSYM}" ] ,
14
- FileList [ 'java/src/**/*.class' ]
15
-
16
6
require 'rake/testtask'
17
7
class UndocumentedTestTask < Rake ::TestTask
18
8
def desc ( *) end
19
9
end
20
10
21
- which = lambda { |c |
22
- w = `which #{ c } `
23
- break w . chomp unless w . empty?
24
- }
25
-
26
- MAKE = ENV [ 'MAKE' ] || %w[ gmake make ] . find ( &which )
27
- BUNDLE = ENV [ 'BUNDLE' ] || %w[ bundle ] . find ( &which )
28
-
29
11
PKG_VERSION = File . foreach ( File . join ( __dir__ , "lib/json/version.rb" ) ) do |line |
30
12
/^\s *VERSION\s *=\s *'(.*)'/ =~ line and break $1
31
13
end rescue nil
32
14
33
- EXT_ROOT_DIR = 'ext/json/ext'
34
- EXT_PARSER_DIR = "#{ EXT_ROOT_DIR } /parser"
35
- EXT_PARSER_DL = "#{ EXT_PARSER_DIR } /parser.#{ CONFIG [ 'DLEXT' ] } "
36
- EXT_PARSER_SRC = "#{ EXT_PARSER_DIR } /parser.c"
37
- EXT_GENERATOR_DIR = "#{ EXT_ROOT_DIR } /generator"
38
- EXT_GENERATOR_DL = "#{ EXT_GENERATOR_DIR } /generator.#{ CONFIG [ 'DLEXT' ] } "
39
- EXT_GENERATOR_SRC = "#{ EXT_GENERATOR_DIR } /generator.c"
40
-
41
15
JAVA_DIR = "java/src/json/ext"
42
16
JAVA_RAGEL_PATH = "#{ JAVA_DIR } /ParserConfig.rl"
43
17
JAVA_PARSER_SRC = "#{ JAVA_DIR } /ParserConfig.java"
@@ -46,6 +20,11 @@ JAVA_CLASSES = []
46
20
JRUBY_PARSER_JAR = File . expand_path ( "lib/json/ext/parser.jar" )
47
21
JRUBY_GENERATOR_JAR = File . expand_path ( "lib/json/ext/generator.jar" )
48
22
23
+ which = lambda { |c |
24
+ w = `which #{ c } `
25
+ break w . chomp unless w . empty?
26
+ }
27
+
49
28
if RUBY_PLATFORM =~ /mingw|mswin/
50
29
# cleans up Windows CI output
51
30
RAGEL_CODEGEN = %w[ ragel ] . find ( &which )
55
34
RAGEL_DOTGEN = %w[ rlgen-dot rlgen-cd ragel ] . find ( &which )
56
35
end
57
36
58
- desc "Installing library (extension)"
59
- task :install => [ :compile ] do
60
- sitearchdir = CONFIG [ "sitearchdir" ]
61
- cd 'ext' do
62
- for file in Dir [ "json/ext/*.#{ CONFIG [ 'DLEXT' ] } " ]
63
- d = File . join ( sitearchdir , file )
64
- mkdir_p File . dirname ( d )
65
- install ( file , d )
66
- end
67
- warn " *** Installed EXT ruby library."
68
- end
69
- end
70
-
71
- namespace :gems do
72
- desc 'Install all development gems'
73
- task :install do
74
- sh "#{ BUNDLE } "
75
- end
76
- end
77
-
78
- file EXT_PARSER_DL => EXT_PARSER_SRC do
79
- cd EXT_PARSER_DIR do
80
- ruby 'extconf.rb'
81
- sh MAKE
82
- end
83
- cp "#{ EXT_PARSER_DIR } /parser.#{ CONFIG [ 'DLEXT' ] } " , EXT_ROOT_DIR
84
- end
85
-
86
- file EXT_GENERATOR_DL => EXT_GENERATOR_SRC do
87
- cd EXT_GENERATOR_DIR do
88
- ruby 'extconf.rb'
89
- sh MAKE
90
- end
91
- cp "#{ EXT_GENERATOR_DIR } /generator.#{ CONFIG [ 'DLEXT' ] } " , EXT_ROOT_DIR
92
- end
93
-
94
37
file JAVA_PARSER_SRC => JAVA_RAGEL_PATH do
95
38
cd JAVA_DIR do
96
39
if RAGEL_CODEGEN == 'ragel'
@@ -102,13 +45,7 @@ file JAVA_PARSER_SRC => JAVA_RAGEL_PATH do
102
45
end
103
46
104
47
desc "Generate parser with ragel"
105
- task :ragel => [ EXT_PARSER_SRC , JAVA_PARSER_SRC ]
106
-
107
- desc "Delete the ragel generated C source"
108
- task :ragel_clean do
109
- rm_rf EXT_PARSER_SRC
110
- rm_rf JAVA_PARSER_SRC
111
- end
48
+ task :ragel => [ JAVA_PARSER_SRC ]
112
49
113
50
if defined? ( RUBY_ENGINE ) and RUBY_ENGINE == 'jruby'
114
51
ENV [ 'JAVA_HOME' ] ||= [
@@ -201,13 +138,14 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
201
138
202
139
task :release => :build
203
140
else
204
- desc "Compiling extension"
205
- if RUBY_ENGINE == 'truffleruby'
206
- task :compile => [ EXT_PARSER_DL ]
207
- else
208
- task :compile => [ EXT_PARSER_DL , EXT_GENERATOR_DL ]
141
+ require 'rake/extensiontask'
142
+
143
+ unless RUBY_ENGINE == 'truffleruby'
144
+ Rake ::ExtensionTask . new ( "json/ext/generator" )
209
145
end
210
146
147
+ Rake ::ExtensionTask . new ( "json/ext/parser" )
148
+
211
149
UndocumentedTestTask . new do |t |
212
150
t . name = :test
213
151
t . test_files = FileList [ 'test/json/*_test.rb' ]
0 commit comments