rake-builder 0.0.17 → 0.0.18

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.
Files changed (20) hide show
  1. data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/Rakefile +412 -0
  2. data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/fbuffer/fbuffer.h +185 -0
  3. data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/generator/generator.c +1427 -0
  4. data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/generator/generator.h +149 -0
  5. data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/parser/parser.c +2204 -0
  6. data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/parser/parser.h +77 -0
  7. data/examples/01_hello_world_cpp/vendor/bundle/gems/rake-10.0.3/Rakefile +374 -0
  8. data/examples/01_hello_world_cpp/vendor/bundle/gems/rake-10.0.3/doc/example/a.c +6 -0
  9. data/examples/01_hello_world_cpp/vendor/bundle/gems/rake-10.0.3/doc/example/b.c +6 -0
  10. data/examples/01_hello_world_cpp/vendor/bundle/gems/rake-10.0.3/doc/example/main.c +11 -0
  11. data/lib/rake/builder.rb +39 -70
  12. data/lib/rake/builder/presenters/makefile_am/builder_collection_presenter.rb +46 -0
  13. data/lib/rake/builder/presenters/makefile_am/builder_presenter.rb +40 -0
  14. data/lib/rake/builder/version.rb +1 -1
  15. data/spec/autoconf_spec.rb +1 -22
  16. data/spec/project_spec.rb +20 -0
  17. data/spec/unit/rake/builder/presenters/makefile_am/builder_collection_presenter_spec.rb +55 -0
  18. data/spec/unit/rake/builder/presenters/makefile_am/builder_presenter_spec.rb +71 -0
  19. data/spec/unit/rake/builder_spec.rb +46 -0
  20. metadata +24 -4
@@ -0,0 +1,77 @@
1
+ #ifndef _PARSER_H_
2
+ #define _PARSER_H_
3
+
4
+ #include "ruby.h"
5
+
6
+ #ifndef HAVE_RUBY_RE_H
7
+ #include "re.h"
8
+ #endif
9
+
10
+ #ifdef HAVE_RUBY_ST_H
11
+ #include "ruby/st.h"
12
+ #else
13
+ #include "st.h"
14
+ #endif
15
+
16
+ #define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key))
17
+
18
+ /* unicode */
19
+
20
+ typedef unsigned long UTF32; /* at least 32 bits */
21
+ typedef unsigned short UTF16; /* at least 16 bits */
22
+ typedef unsigned char UTF8; /* typically 8 bits */
23
+
24
+ #define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD
25
+ #define UNI_SUR_HIGH_START (UTF32)0xD800
26
+ #define UNI_SUR_HIGH_END (UTF32)0xDBFF
27
+ #define UNI_SUR_LOW_START (UTF32)0xDC00
28
+ #define UNI_SUR_LOW_END (UTF32)0xDFFF
29
+
30
+ typedef struct JSON_ParserStruct {
31
+ VALUE Vsource;
32
+ char *source;
33
+ long len;
34
+ char *memo;
35
+ VALUE create_id;
36
+ int max_nesting;
37
+ int current_nesting;
38
+ int allow_nan;
39
+ int parsing_name;
40
+ int symbolize_names;
41
+ int quirks_mode;
42
+ VALUE object_class;
43
+ VALUE array_class;
44
+ int create_additions;
45
+ VALUE match_string;
46
+ FBuffer *fbuffer;
47
+ } JSON_Parser;
48
+
49
+ #define GET_PARSER \
50
+ GET_PARSER_INIT; \
51
+ if (!json->Vsource) rb_raise(rb_eTypeError, "uninitialized instance")
52
+ #define GET_PARSER_INIT \
53
+ JSON_Parser *json; \
54
+ Data_Get_Struct(self, JSON_Parser, json)
55
+
56
+ #define MinusInfinity "-Infinity"
57
+ #define EVIL 0x666
58
+
59
+ static UTF32 unescape_unicode(const unsigned char *p);
60
+ static int convert_UTF32_to_UTF8(char *buf, UTF32 ch);
61
+ static char *JSON_parse_object(JSON_Parser *json, char *p, char *pe, VALUE *result);
62
+ static char *JSON_parse_value(JSON_Parser *json, char *p, char *pe, VALUE *result);
63
+ static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *result);
64
+ static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *result);
65
+ static char *JSON_parse_array(JSON_Parser *json, char *p, char *pe, VALUE *result);
66
+ static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd);
67
+ static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *result);
68
+ static VALUE convert_encoding(VALUE source);
69
+ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self);
70
+ static VALUE cParser_parse(VALUE self);
71
+ static JSON_Parser *JSON_allocate();
72
+ static void JSON_mark(JSON_Parser *json);
73
+ static void JSON_free(JSON_Parser *json);
74
+ static VALUE cJSON_parser_s_allocate(VALUE klass);
75
+ static VALUE cParser_source(VALUE self);
76
+
77
+ #endif
@@ -0,0 +1,374 @@
1
+ # Rakefile for rake -*- ruby -*-
2
+
3
+ # Copyright 2003, 2004, 2005 by Jim Weirich (jim@weirichhouse.org)
4
+ # All rights reserved.
5
+
6
+ # This file may be distributed under an MIT style license. See
7
+ # MIT-LICENSE for details.
8
+
9
+ require 'rbconfig'
10
+ require 'rubygems'
11
+
12
+ system_rake = File.join RbConfig::CONFIG['rubylibdir'], 'rake.rb'
13
+
14
+ # Use our rake, not the installed rake from system
15
+ if $".include? system_rake or $".grep(/rake\/name_space\.rb$/).empty? then
16
+ exec Gem.ruby, '-Ilib', 'bin/rake', *ARGV
17
+ end
18
+
19
+ require 'rubygems/package_task'
20
+
21
+ require 'rake/clean'
22
+ require 'rake/testtask'
23
+
24
+ begin
25
+ gem 'rdoc'
26
+ require 'rdoc/task'
27
+ rescue Gem::LoadError
28
+ end
29
+
30
+ CLEAN.include('**/*.o', '*.dot', '**/*.rbc')
31
+ CLOBBER.include('doc/example/main')
32
+ CLOBBER.include('TAGS')
33
+ CLOBBER.include('coverage', 'rcov_aggregate')
34
+
35
+ # Prevent OS X from including extended attribute junk in the tar output
36
+ ENV['COPY_EXTENDED_ATTRIBUTES_DISABLE'] = 'true'
37
+
38
+ def announce(msg='')
39
+ STDERR.puts msg
40
+ end
41
+
42
+ # Determine the current version of the software
43
+
44
+ if `ruby -Ilib ./bin/rake --version` =~ /rake, version ([0-9a-z.]+)$/
45
+ CURRENT_VERSION = $1
46
+ else
47
+ CURRENT_VERSION = "0.0.0"
48
+ end
49
+
50
+ $package_version = CURRENT_VERSION
51
+
52
+ SRC_RB = FileList['lib/**/*.rb']
53
+
54
+ # The default task is run if rake is given no explicit arguments.
55
+
56
+ desc "Default Task"
57
+ task :default => :test
58
+
59
+ # Test Tasks ---------------------------------------------------------
60
+
61
+ Rake::TestTask.new do |t|
62
+ files = FileList['test/helper.rb', 'test/test_*.rb']
63
+ t.loader = :rake
64
+ t.test_files = files
65
+ t.libs << "."
66
+ t.warning = true
67
+ end
68
+
69
+ begin
70
+ require 'rcov/rcovtask'
71
+ IGNORE_COVERAGE_IN = FileList[
72
+ 'lib/rake/rdoctask.rb',
73
+ 'lib/rake/testtask.rb',
74
+ 'lib/rake/packagetask.rb',
75
+ 'lib/rake/clean.rb',
76
+ ]
77
+
78
+ unless File::ALT_SEPARATOR
79
+ IGNORE_COVERAGE_IN.include(
80
+ 'lib/rake/alt_system.rb',
81
+ 'lib/rake/win32.rb')
82
+ end
83
+
84
+ Rcov::RcovTask.new do |t|
85
+ t.libs << "test"
86
+ t.rcov_opts = [
87
+ '-xRakefile', '-xrakefile', '-xpublish.rf',
88
+ '-xlib/rake/contrib', '-x/Library', '-x.rvm',
89
+ '--text-report',
90
+ '--sort coverage'
91
+ ] + FileList['rakelib/*.rake'].pathmap("-x%p") +
92
+ IGNORE_COVERAGE_IN.map { |fn| "-x#{fn}" }
93
+ t.test_files = FileList[
94
+ 'test/lib/*_test.rb',
95
+ 'test/contrib/*_test.rb',
96
+ 'test/functional/*_test.rb'
97
+ ]
98
+ t.output_dir = 'coverage'
99
+ t.verbose = true
100
+ end
101
+ rescue LoadError
102
+ task :rcov do
103
+ puts "RCov is not available"
104
+ end
105
+ end
106
+
107
+ # CVS Tasks ----------------------------------------------------------
108
+
109
+ # Install rake using the standard install.rb script.
110
+
111
+ desc "Install the application"
112
+ task :install do
113
+ ruby "install.rb"
114
+ end
115
+
116
+ # Create a task to build the RDOC documentation tree.
117
+
118
+ BASE_RDOC_OPTIONS = [
119
+ '--line-numbers', '--show-hash',
120
+ '--main', 'README.rdoc',
121
+ '--title', 'Rake -- Ruby Make'
122
+ ]
123
+
124
+ if defined?(RDoc::Task) then
125
+ RDoc::Task.new do |rdoc|
126
+ rdoc.rdoc_dir = 'html'
127
+ rdoc.title = "Rake -- Ruby Make"
128
+ rdoc.options = BASE_RDOC_OPTIONS.dup
129
+
130
+ rdoc.rdoc_files.include('README.rdoc', 'MIT-LICENSE', 'TODO', 'CHANGES')
131
+ rdoc.rdoc_files.include('lib/**/*.rb', 'doc/**/*.rdoc')
132
+ rdoc.rdoc_files.exclude(/\bcontrib\b/)
133
+ end
134
+ else
135
+ warn "RDoc 2.4.2+ is required to build documentation"
136
+ end
137
+
138
+ # ====================================================================
139
+ # Create a task that will package the Rake software into distributable
140
+ # tar, zip and gem files.
141
+
142
+ PKG_FILES = FileList[
143
+ '.gemtest',
144
+ 'install.rb',
145
+ 'CHANGES',
146
+ 'MIT-LICENSE',
147
+ 'README.rdoc',
148
+ 'Rakefile',
149
+ 'TODO',
150
+ 'bin/rake',
151
+ 'lib/**/*.rb',
152
+ 'test/**/*.rb',
153
+ 'doc/**/*'
154
+ ]
155
+ PKG_FILES.exclude('doc/example/*.o')
156
+ PKG_FILES.exclude('TAGS')
157
+ PKG_FILES.exclude(%r{doc/example/main$})
158
+
159
+ if ! defined?(Gem)
160
+ puts "Package Target requires RubyGems"
161
+ else
162
+ SPEC = Gem::Specification.new do |s|
163
+ s.name = 'rake'
164
+ s.version = $package_version
165
+ s.summary = "Ruby based make-like utility."
166
+ s.description = <<-EOF.delete "\n"
167
+ Rake is a Make-like program implemented in Ruby. Tasks and dependencies are
168
+ specified in standard Ruby syntax.
169
+ EOF
170
+
171
+ s.required_ruby_version = '>= 1.8.6'
172
+ s.required_rubygems_version = '>= 1.3.2'
173
+ s.add_development_dependency 'minitest', '~> 2.1'
174
+
175
+ s.files = PKG_FILES.to_a
176
+
177
+ s.executables = ["rake"]
178
+
179
+ s.extra_rdoc_files = FileList[
180
+ 'README.rdoc',
181
+ 'MIT-LICENSE',
182
+ 'TODO',
183
+ 'CHANGES',
184
+ 'doc/**/*.rdoc'
185
+ ]
186
+
187
+ s.rdoc_options = BASE_RDOC_OPTIONS
188
+
189
+ s.author = "Jim Weirich"
190
+ s.email = "jim@weirichhouse.org"
191
+ s.homepage = "http://rake.rubyforge.org"
192
+ s.rubyforge_project = "rake"
193
+ end
194
+
195
+ Gem::PackageTask.new(SPEC) do |pkg|
196
+ pkg.need_zip = true
197
+ pkg.need_tar = true
198
+ end
199
+
200
+ file "rake.gemspec" => ["Rakefile", "lib/rake.rb"] do |t|
201
+ require 'yaml'
202
+ open(t.name, "w") { |f| f.puts SPEC.to_yaml }
203
+ end
204
+
205
+ desc "Create a stand-alone gemspec"
206
+ task :gemspec => "rake.gemspec"
207
+ end
208
+
209
+ # Misc tasks =========================================================
210
+
211
+ def count_lines(filename)
212
+ lines = 0
213
+ codelines = 0
214
+ open(filename) { |f|
215
+ f.each do |line|
216
+ lines += 1
217
+ next if line =~ /^\s*$/
218
+ next if line =~ /^\s*#/
219
+ codelines += 1
220
+ end
221
+ }
222
+ [lines, codelines]
223
+ end
224
+
225
+ def show_line(msg, lines, loc)
226
+ printf "%6s %6s %s\n", lines.to_s, loc.to_s, msg
227
+ end
228
+
229
+ desc "Count lines in the main rake file"
230
+ task :lines do
231
+ total_lines = 0
232
+ total_code = 0
233
+ show_line("File Name", "LINES", "LOC")
234
+ SRC_RB.each do |fn|
235
+ lines, codelines = count_lines(fn)
236
+ show_line(fn, lines, codelines)
237
+ total_lines += lines
238
+ total_code += codelines
239
+ end
240
+ show_line("TOTAL", total_lines, total_code)
241
+ end
242
+
243
+ # Define an optional publish target in an external file. If the
244
+ # publish.rf file is not found, the publish targets won't be defined.
245
+
246
+ load "publish.rf" if File.exist? "publish.rf"
247
+
248
+ # Support Tasks ------------------------------------------------------
249
+
250
+ RUBY_FILES = FileList['**/*.rb'].exclude('pkg')
251
+
252
+ desc "Look for TODO and FIXME tags in the code"
253
+ task :todo do
254
+ RUBY_FILES.egrep(/#.*(FIXME|TODO|TBD)/)
255
+ end
256
+
257
+ desc "List all ruby files"
258
+ task :rubyfiles do
259
+ puts RUBY_FILES
260
+ puts FileList['bin/*'].exclude('bin/*.rb')
261
+ end
262
+ task :rf => :rubyfiles
263
+
264
+ # --------------------------------------------------------------------
265
+ # Creating a release
266
+
267
+ def plugin(plugin_name)
268
+ require "rake/plugins/#{plugin_name}"
269
+ end
270
+
271
+ task :noop
272
+ #plugin "release_manager"
273
+
274
+ desc "Make a new release"
275
+ task :release, [:rel, :reuse, :reltest] => [
276
+ :prerelease,
277
+ :clobber,
278
+ :test,
279
+ :update_version,
280
+ :package,
281
+ :tag
282
+ ] do
283
+ announce
284
+ announce "**************************************************************"
285
+ announce "* Release #{$package_version} Complete."
286
+ announce "* Packages ready to upload."
287
+ announce "**************************************************************"
288
+ announce
289
+ end
290
+
291
+ # Validate that everything is ready to go for a release.
292
+ task :prerelease, :rel, :reuse, :reltest do |t, args|
293
+ $package_version = args.rel
294
+ announce
295
+ announce "**************************************************************"
296
+ announce "* Making RubyGem Release #{$package_version}"
297
+ announce "* (current version #{CURRENT_VERSION})"
298
+ announce "**************************************************************"
299
+ announce
300
+
301
+ # Is a release number supplied?
302
+ unless args.rel
303
+ fail "Usage: rake release[X.Y.Z] [REUSE=tag_suffix]"
304
+ end
305
+
306
+ # Is the release different than the current release.
307
+ # (or is REUSE set?)
308
+ if $package_version == CURRENT_VERSION && ! args.reuse
309
+ fail "Current version is #{$package_version}, must specify REUSE=tag_suffix to reuse version"
310
+ end
311
+
312
+ # Are all source files checked in?
313
+ if args.reltest
314
+ announce "Release Task Testing, skipping checked-in file test"
315
+ else
316
+ announce "Checking for unchecked-in files..."
317
+ data = `svn st`
318
+ unless data =~ /^$/
319
+ abort "svn status is not clean ... do you have unchecked-in files?"
320
+ end
321
+ announce "No outstanding checkins found ... OK"
322
+ end
323
+ end
324
+
325
+ task :update_version, [:rel, :reuse, :reltest] => [:prerelease] do |t, args|
326
+ if args.rel == CURRENT_VERSION
327
+ announce "No version change ... skipping version update"
328
+ else
329
+ announce "Updating Rake version to #{args.rel}"
330
+ open("lib/rake.rb") do |rakein|
331
+ open("lib/rake.rb.new", "w") do |rakeout|
332
+ rakein.each do |line|
333
+ if line =~ /^RAKEVERSION\s*=\s*/
334
+ rakeout.puts "RAKEVERSION = '#{args.rel}'"
335
+ else
336
+ rakeout.puts line
337
+ end
338
+ end
339
+ end
340
+ end
341
+ mv "lib/rake.rb.new", "lib/rake.rb"
342
+ if args.reltest
343
+ announce "Release Task Testing, skipping commiting of new version"
344
+ else
345
+ sh %{svn commit -m "Updated to version #{args.rel}" lib/rake.rb} # "
346
+ end
347
+ end
348
+ end
349
+
350
+ desc "Tag all the CVS files with the latest release number (REL=x.y.z)"
351
+ task :tag, [:rel, :reuse, :reltest] => [:prerelease] do |t, args|
352
+ reltag = "REL_#{args.rel.gsub(/\./, '_')}"
353
+ reltag << args.reuse.gsub(/\./, '_') if args.reuse
354
+ announce "Tagging Repository with [#{reltag}]"
355
+ if args.reltest
356
+ announce "Release Task Testing, skipping CVS tagging"
357
+ else
358
+ sh %{svn copy svn+ssh://rubyforge.org/var/svn/rake/trunk svn+ssh://rubyforge.org/var/svn/rake/tags/#{reltag} -m 'Commiting release #{reltag}'} ###'
359
+ end
360
+ end
361
+
362
+ # Require experimental XForge/Metaproject support.
363
+
364
+ load 'xforge.rf' if File.exist?('xforge.rf')
365
+
366
+ desc "Where is the current directory. This task displays\nthe current rake directory"
367
+ task :where_am_i do
368
+ puts Rake.original_dir
369
+ end
370
+
371
+ task :failure => :really_fail
372
+ task :really_fail do
373
+ fail "oops"
374
+ end