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 +2 -1
- data/README.md +2 -0
- data/lib/rakeoe/app.rb +1 -1
- data/lib/rakeoe/config.rb +17 -1
- data/lib/rakeoe/defaults.rb +28 -0
- data/lib/rakeoe/toolchain.rb +17 -6
- data/lib/rakeoe/version.rb +1 -1
- data/rakeoe.gemspec +4 -5
- data/spec/rakoe_spec.rb +16 -3
- data/spec/spec_helper.rb +0 -3
- data/spec/support/factories_spec.rb +34 -0
- data/spec/support/factory_girl.rb +5 -0
- metadata +14 -26
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
[](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
|
+
* [](https://www.omniref.com/ruby/gems/rakeoe)
|
35
37
|
|
36
38
|
## License
|
37
39
|
|
data/lib/rakeoe/app.rb
CHANGED
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
|
data/lib/rakeoe/defaults.rb
CHANGED
@@ -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' => '',
|
data/lib/rakeoe/toolchain.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
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]}
|
516
|
-
sh "#{@settings['
|
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
|
data/lib/rakeoe/version.rb
CHANGED
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
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
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
|
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
|
-
|
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
|
-
|
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
@@ -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
|
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.
|
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:
|
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: '
|
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: '
|
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: '
|
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: '
|
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
|