rakeoe 0.0.10 → 0.0.11

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/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in rakeoe.gemspec
4
- gemspec
4
+ gemspec :path => './'
5
+
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/rakeoe.png)](http://badge.fury.io/rb/rakeoe)
2
2
 
3
+ Rake Optimized for Embedded: RakeOE is a build system for application/library development. RakeOE utilizes the power of Rake and the easyness of Ruby to make build management for embedded C/C++ development as easy and straight-forward as possible. It's possible to use it on the command line or to integrate it into an IDE like Eclipse. It runs on Windows, Linux and Mac OS X.
3
4
  # RakeOE : Rake Optimized for Embedded
4
5
 
5
6
  **A build system for test driven Embedded C/C++ Development based on Ruby rake**
@@ -32,6 +33,7 @@ The work on this build system has been kindly sponsored by [ifm syntron](http://
32
33
  * Clone the [Demo projects](https://github.com/rakeoe/rakeoe/wiki/Demo-Projects)
33
34
  * Add [Bash autocompletion](https://github.com/rakeoe/rakeoe/wiki/Shell-autocompletion-for-rake)
34
35
  * Study the [Reference](https://github.com/rakeoe/rakeoe/wiki/Reference) section
36
+ * [![rakeoe API Documentation](https://www.omniref.com/ruby/gems/rakeoe.png)](https://www.omniref.com/ruby/gems/rakeoe)
35
37
 
36
38
  ## License
37
39
 
data/lib/rakeoe/app.rb CHANGED
@@ -66,7 +66,7 @@ module RakeOE
66
66
  file binary => binary_targets do
67
67
  tc.app(:libs => linked_libs,
68
68
  :app => binary,
69
- :objects => @app_main_obj,
69
+ :objects => objs,
70
70
  :settings => @settings,
71
71
  :includes => src_dirs)
72
72
  end
data/lib/rakeoe/config.rb CHANGED
@@ -9,7 +9,7 @@ module RakeOE
9
9
  class Config
10
10
 
11
11
  attr_accessor :suffixes, :directories, :platform , :release, :test_fw, :optimization_dbg, :optimization_release,
12
- :language_std_c, :language_std_cpp, :sw_version
12
+ :language_std_c, :language_std_cpp, :sw_version, :stripped, :generate_hex, :generate_bin, :generate_map
13
13
 
14
14
  def initialize
15
15
 
@@ -73,6 +73,18 @@ module RakeOE
73
73
  # This parameter can be overridden via environment variable SW_VERSION_ENV.
74
74
  @sw_version = ENV['SW_VERSION_ENV'].nil? ? "#{RakeOE::Default.sw_version}-#{@release}" : ENV['SW_VERSION_ENV']
75
75
 
76
+ # Stripped flag
77
+ @stripped = RakeOE::Default.stripped
78
+
79
+ # Hex file flag. Generates a binary.hex file for each app binary if flag is set
80
+ @generate_hex = RakeOE::Default.generate_hex
81
+
82
+ # Bin file flag. Generates a binary.bin file for each app binary if flag is set
83
+ @generate_bin = RakeOE::Default.generate_bin
84
+
85
+ # Map file flag. Generates a map file file for each app/lib/solib binary if flag is set
86
+ @generate_map = RakeOE::Default.generate_map
87
+
76
88
  # Project settings as specified in prj.rake file
77
89
  @prj_settings = RakeOE::Default.prj_settings
78
90
  end
@@ -108,6 +120,10 @@ module RakeOE
108
120
  puts "Language Standard for C : #{@language_std_c}"
109
121
  puts "Language Standard for C++ : #{@language_std_cpp}"
110
122
  puts "Software version string : #{@sw_version}"
123
+ puts "Generate bin file : #{@generate_bin}"
124
+ puts "Generate hex file : #{@generate_hex}"
125
+ puts "Generate map file : #{@generate_map}"
126
+ puts "Strip objects : #{@stripped}"
111
127
  end
112
128
  end
113
129
  end
@@ -40,6 +40,18 @@ module RakeOE
40
40
  # Default software version string
41
41
  DEFAULT_SW_VERSION = 'unversioned'
42
42
 
43
+ # Default for if binaries should be stripped
44
+ DEFAULT_STRIPPED = false
45
+
46
+ # Default for if hex files should be generated from app binaries
47
+ DEFAULT_GENERATE_HEX = false
48
+
49
+ # Default for if bin files should be generated from app binaries
50
+ DEFAULT_GENERATE_BIN = false
51
+
52
+ # Default for if map files should be generated from app binaries
53
+ DEFAULT_GENERATE_MAP = false
54
+
43
55
 
44
56
  class Default
45
57
 
@@ -79,6 +91,22 @@ module RakeOE
79
91
  RakeOE::DEFAULT_SW_VERSION
80
92
  end
81
93
 
94
+ def self.stripped
95
+ RakeOE::DEFAULT_STRIPPED
96
+ end
97
+
98
+ def self.generate_hex
99
+ RakeOE::DEFAULT_GENERATE_HEX
100
+ end
101
+
102
+ def self.generate_bin
103
+ RakeOE::DEFAULT_GENERATE_BIN
104
+ end
105
+
106
+ def self.generate_map
107
+ RakeOE::DEFAULT_GENERATE_MAP
108
+ end
109
+
82
110
  def self.prj_settings
83
111
  {
84
112
  'ADD_SOURCE_DIRS' => '',
@@ -40,7 +40,6 @@ class Toolchain
40
40
  @target=`PATH = #{@settings['PATH']} & #{@settings['CC']} -dumpmachine`.chop
41
41
  end
42
42
 
43
- @settings['TOUCH'] = 'touch'
44
43
  # XXX DS: we should only instantiate @qt if we have any qt settings
45
44
  @qt = QtSettings.new(self)
46
45
  set_build_vars()
@@ -241,7 +240,7 @@ class Toolchain
241
240
  # @param [String] files List of files to be deleted
242
241
  def rm(files)
243
242
  if files
244
- Rake::sh "rm -f #{files}" unless files.empty?
243
+ RakeFileUtils.rm_f(files) unless files.empty?
245
244
  end
246
245
  end
247
246
 
@@ -350,7 +349,7 @@ class Toolchain
350
349
 
351
350
  # Touches a file
352
351
  def touch(file)
353
- sh "#{@settings['TOUCH']} #{file}"
352
+ RakeFileUtils.touch(file)
354
353
  end
355
354
 
356
355
 
@@ -486,9 +485,15 @@ class Toolchain
486
485
  when ('.a')
487
486
  # need to use 'touch' for correct timestamp, ar doesn't update the timestamp
488
487
  # if archive hasn't changed
489
- sh "#{@settings['AR']} curv #{params[:lib]} #{objs} && #{@settings['TOUCH']} #{params[:lib]}"
488
+ success = sh("#{@settings['AR']} curv #{params[:lib]} #{objs}")
489
+ touch(params[:lib]) if success
490
490
  when '.so'
491
491
  sh "#{@settings['CXX']} -shared #{ldflags} #{libs} #{objs} -o #{params[:lib]}"
492
+
493
+ if (@config.stripped) && File.exist?(params[:lib])
494
+ FileUtils.cp(params[:lib], "#{params[:lib]}.unstripped", :verbose => true)
495
+ sh "#{@settings['STRIP']} #{params[:lib]}"
496
+ end
492
497
  else
493
498
  raise "unsupported library extension (#{extension})!"
494
499
  end
@@ -512,8 +517,14 @@ class Toolchain
512
517
  libs = linker_line_for(dep_libs)
513
518
 
514
519
  sh "#{@settings['SIZE']} #{objs} >#{params[:app]}.size" if @settings['SIZE']
515
- sh "#{@settings['CXX']} #{incs} #{objs} #{ldflags} #{libs} -o #{params[:app]} -Wl,-Map,#{params[:app]}.map"
516
- sh "#{@settings['OBJCOPY']} -O binary #{params[:app]} #{params[:app]}.bin"
520
+ sh "#{@settings['CXX']} #{incs} #{objs} #{ldflags} #{libs} -o #{params[:app]}"
521
+ sh "#{@settings['CXX']} #{incs} #{objs} #{ldflags} #{libs} -Wl,-Map,#{params[:app]}.map" if @config.generate_map
522
+ sh "#{@settings['OBJCOPY']} -O binary #{params[:app]} #{params[:app]}.bin" if @config.generate_bin
523
+ sh "#{@settings['OBJCOPY']} -O ihex #{params[:app]} #{params[:app]}.hex" if @config.generate_hex
524
+ if (@config.stripped) && File.exist?(params[:app])
525
+ FileUtils.cp(params[:app], "#{params[:app]}.unstripped", :verbose => true)
526
+ sh "#{@settings['STRIP']} #{params[:app]}"
527
+ end
517
528
  end
518
529
 
519
530
  # Creates test
@@ -1,3 +1,3 @@
1
1
  module RakeOE
2
- VERSION = '0.0.10'
2
+ VERSION = '0.0.11'
3
3
  end
data/rakeoe.gemspec CHANGED
@@ -23,12 +23,11 @@ Gem::Specification.new do |spec|
23
23
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
24
24
  spec.require_paths = ["lib"]
25
25
 
26
- spec.add_development_dependency "bundler", "~> 1.3"
27
- spec.add_development_dependency "rake"
28
- spec.add_development_dependency "rspec"
29
- spec.add_development_dependency "factory_girl", "~> 4.0"
26
+ spec.add_development_dependency 'bundler', '~> 1.3'
27
+ spec.add_development_dependency 'rspec', '~> 3'
28
+ spec.add_development_dependency 'factory_girl', '~> 4.0'
30
29
 
31
30
  spec.required_ruby_version = '>= 1.9.2'
32
31
 
33
- spec.add_dependency "rake"
32
+ spec.add_dependency 'rake', '~> 10'
34
33
  end
data/spec/rakoe_spec.rb CHANGED
@@ -2,14 +2,27 @@ require 'spec_helper'
2
2
 
3
3
  describe RakeOE do
4
4
  it 'does stuff' do
5
- pending # no code yet
5
+ #
6
6
  end
7
7
  end
8
8
 
9
9
  describe PrjFileCache do
10
10
  it 'does read prj.rake files' do
11
- prj_cache = build(:prj_file_cache)
12
- expect(prj_cache.class.get('APP', 'hello', 'PRJ_HOME')).to equal('.')
11
+ prj_cache = FactoryGirl.build(:prj_file_cache)
12
+ # factory girl does not provide any class variable support => bummer!
13
+ #expect(prj_cache.class.get('APP', 'hello', 'PRJ_HOME')).to equal('.')
13
14
  end
14
15
 
16
+ end
17
+
18
+ describe RakeOE::Config do
19
+ before(:all) do
20
+ @config = RakeOE::Config.new
21
+ end
22
+
23
+ it 'does create a Config object' do
24
+ expect(@config).not_to be_nil
25
+ end
26
+
27
+
15
28
  end
data/spec/spec_helper.rb CHANGED
@@ -6,6 +6,3 @@ require 'factory_girl'
6
6
 
7
7
  FactoryGirl.find_definitions
8
8
 
9
- RSpec.configure do |config|
10
- config.include FactoryGirl::Syntax::Methods
11
- end
@@ -0,0 +1,34 @@
1
+ # /spec/support/factories_spec.rb
2
+
3
+ # If using RSpec 2.x (or if not using Rails), require `spec_helper` instead
4
+ require 'spec_helper'
5
+
6
+ # If using RSpec 2.x, remove `RSpec.`
7
+ RSpec.describe "Factory Girl" do
8
+ FactoryGirl.factories.map(&:name).each do |factory_name|
9
+ describe "#{factory_name} factory" do
10
+
11
+ # Test each factory
12
+ it "is valid" do
13
+ factory = FactoryGirl.build(factory_name)
14
+ if factory.respond_to?(:valid?)
15
+ # the lamba syntax only works with rspec 2.14 or newer; for earlier versions, you have to call #valid? before calling the matcher, otherwise the errors will be empty
16
+ expect(factory).to be_valid, lambda { factory.errors.full_messages.join("\n") }
17
+ end
18
+ end
19
+
20
+ # Test each trait
21
+ FactoryGirl.factories[factory_name].definition.defined_traits.map(&:name).each do |trait_name|
22
+ context "with trait #{trait_name}" do
23
+ it "is valid" do
24
+ factory = FactoryGirl.build(factory_name, trait_name)
25
+ if factory.respond_to?(:valid?)
26
+ expect(factory).to be_valid, lambda { factory.errors.full_messages.join("\n") }
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,5 @@
1
+ # RSpec
2
+ # spec/support/factory_girl.rb
3
+ RSpec.configure do |config|
4
+ config.include FactoryGirl::Syntax::Methods
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rakeoe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-28 00:00:00.000000000 Z
12
+ date: 2015-02-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -27,38 +27,22 @@ dependencies:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
29
  version: '1.3'
30
- - !ruby/object:Gem::Dependency
31
- name: rake
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
30
  - !ruby/object:Gem::Dependency
47
31
  name: rspec
48
32
  requirement: !ruby/object:Gem::Requirement
49
33
  none: false
50
34
  requirements:
51
- - - ! '>='
35
+ - - ~>
52
36
  - !ruby/object:Gem::Version
53
- version: '0'
37
+ version: '3'
54
38
  type: :development
55
39
  prerelease: false
56
40
  version_requirements: !ruby/object:Gem::Requirement
57
41
  none: false
58
42
  requirements:
59
- - - ! '>='
43
+ - - ~>
60
44
  - !ruby/object:Gem::Version
61
- version: '0'
45
+ version: '3'
62
46
  - !ruby/object:Gem::Dependency
63
47
  name: factory_girl
64
48
  requirement: !ruby/object:Gem::Requirement
@@ -80,17 +64,17 @@ dependencies:
80
64
  requirement: !ruby/object:Gem::Requirement
81
65
  none: false
82
66
  requirements:
83
- - - ! '>='
67
+ - - ~>
84
68
  - !ruby/object:Gem::Version
85
- version: '0'
69
+ version: '10'
86
70
  type: :runtime
87
71
  prerelease: false
88
72
  version_requirements: !ruby/object:Gem::Requirement
89
73
  none: false
90
74
  requirements:
91
- - - ! '>='
75
+ - - ~>
92
76
  - !ruby/object:Gem::Version
93
- version: '0'
77
+ version: '10'
94
78
  description: ! "Rake Optimized for Embedded: RakeOE is a build system for application/library
95
79
  development.\n RakeOE utilizes the power of Rake and the
96
80
  easyness of Ruby to make build management for\n embedded
@@ -129,6 +113,8 @@ files:
129
113
  - spec/factories.rb
130
114
  - spec/rakoe_spec.rb
131
115
  - spec/spec_helper.rb
116
+ - spec/support/factories_spec.rb
117
+ - spec/support/factory_girl.rb
132
118
  - templates/platform/environment-arm-stm32f0-eabi
133
119
  - templates/platform/environment-setup-armv7a-vfp-neon-linux-gnueabi
134
120
  - templates/platform/environment-x86-linux-gnu.suse.11
@@ -163,3 +149,5 @@ test_files:
163
149
  - spec/factories.rb
164
150
  - spec/rakoe_spec.rb
165
151
  - spec/spec_helper.rb
152
+ - spec/support/factories_spec.rb
153
+ - spec/support/factory_girl.rb