bake-toolkit 1.0.24 → 1.0.25
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.
- checksums.yaml +7 -0
- data/bin/bake-doc +12 -0
- data/doc/cmd/install.html +78 -0
- data/doc/cmd/mount.png +0 -0
- data/doc/cmd/ruby.png +0 -0
- data/doc/cmd/tty.png +0 -0
- data/doc/cmd/usecmd.html +56 -0
- data/doc/cmd/usecygwin.html +49 -0
- data/doc/concepts/buildhierarchy.html +42 -0
- data/doc/concepts/configfile.html +102 -0
- data/doc/concepts/hier.png +0 -0
- data/doc/concepts/mainproject.html +87 -0
- data/doc/dyk/keys.png +0 -0
- data/doc/dyk/tipps.html +51 -0
- data/doc/eclipse/export.html +39 -0
- data/doc/eclipse/import.html +29 -0
- data/doc/eclipse/install.html +26 -0
- data/doc/eclipse/new.html +17 -0
- data/doc/eclipse/use.html +56 -0
- data/doc/further/change.html +160 -0
- data/doc/further/collections.html +21 -0
- data/doc/further/internal.html +42 -0
- data/doc/further/issues.html +18 -0
- data/doc/further/perf.html +54 -0
- data/doc/further/wish.html +39 -0
- data/doc/index.html +78 -0
- data/doc/src/ok.png +0 -0
- data/doc/syntax/derive.html +89 -0
- data/doc/syntax/subst.html +103 -0
- data/doc/syntax/syntax.html +587 -0
- data/doc/vs/create.html +16 -0
- data/doc/vs/install.html +28 -0
- data/doc/vs/use.html +24 -0
- data/lib/bake/mergeConfig.rb +108 -0
- data/lib/bake/model/metamodel.rb +1 -0
- data/lib/bake/version.rb +2 -2
- data/lib/tocxx.rb +39 -12
- metadata +95 -58
data/doc/vs/create.html
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Documentation of the bake-tookit</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<h1>How to create a solution / projects in Visual Studio</h1>
|
8
|
+
|
9
|
+
bake projects are Makefile projects (NMake). When creating a new project, you can just create a new Makefile project and add a Project.meta.<br>
|
10
|
+
The recommended way is to use a script which comes with bake-toolkit:<br>
|
11
|
+
<img src="create/cvsp.png"/><p>
|
12
|
+
Example: <i>createVSProjects --version 2012 --rewrite_solution</i>
|
13
|
+
|
14
|
+
</body>
|
15
|
+
|
16
|
+
</html>
|
data/doc/vs/install.html
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Documentation of the bake-tookit</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<h1>How to install bake Visual Studio integration</h1>
|
8
|
+
<h2>VS 2012</h2>
|
9
|
+
The plugin is available on a E.S.R.Labs update site. Please follow the steps below to install the plugin.<br>
|
10
|
+
<p>
|
11
|
+
Configure the update site:<br>
|
12
|
+
<img src="install/site.png"/><br>
|
13
|
+
URL: <i>http://www.esrlabs.com/vs-plugins/bake/atom.xml</i>
|
14
|
+
<p>
|
15
|
+
Now it's available via Tools->Extensions and Updates:<br>
|
16
|
+
<img src="install/install1.png"/><p>
|
17
|
+
Check if it's installed correctly:<br>
|
18
|
+
<img src="install/installed.png"/><p>
|
19
|
+
If an update is available, it will look like this:<br>
|
20
|
+
<img src="install/update.png"/><p>
|
21
|
+
|
22
|
+
<h2>VS 2010</h2>
|
23
|
+
The plugin is available on a E.S.R.Labs server.<br>
|
24
|
+
Download <a href="http://www.esrlabs.com/vs-plugins/bake/bake Visual Studio Extension 2010.vsix">Visual Studio 2010 bake plugin</a>, double click the file and install it:<br>
|
25
|
+
<img src="install/install2010.png"/><p>
|
26
|
+
</body>
|
27
|
+
|
28
|
+
</html>
|
data/doc/vs/use.html
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Documentation of the bake-tookit</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<h1>How to use bake in Visual Studio</h1>
|
8
|
+
|
9
|
+
<h2>Select a build configuration of the main project</h2>
|
10
|
+
Right click on the main project and select a bake build configuration. Note, that only configurations with a DefaultToolchain will be displayed.<br>
|
11
|
+
<img src="use/select.png"/><p>
|
12
|
+
|
13
|
+
You can see the selected config in the last line of the Build menu:<br>
|
14
|
+
<img src="use/show.png"/><br>
|
15
|
+
If you click on this menu item, you can deselect the build config, which disables bake as long as no other config will be selected.<p>
|
16
|
+
|
17
|
+
You can specify additional command line parameters via the Options menu:<br>
|
18
|
+
<img src="use/options.png"/><p>
|
19
|
+
|
20
|
+
The build result will be shown in the Output window, errors will be shown in the Error window and annotated in the sources:<br>
|
21
|
+
<img src="use/error.png"/>
|
22
|
+
</body>
|
23
|
+
|
24
|
+
</html>
|
@@ -0,0 +1,108 @@
|
|
1
|
+
module Cxxproject
|
2
|
+
|
3
|
+
class MergeConfig
|
4
|
+
|
5
|
+
def initialize(child, parent)
|
6
|
+
@child = child
|
7
|
+
@parent = parent
|
8
|
+
end
|
9
|
+
|
10
|
+
def mergeToolchain(pt,ct)
|
11
|
+
pt.compiler.each do |pc|
|
12
|
+
if ct.compiler.none?{|cc| cc.ctype == pc.ctype}
|
13
|
+
ct.addCompiler(pc)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
if ct.archiver.nil? and not pt.archiver.nil?
|
17
|
+
ct.setArchiver(pt.archiver)
|
18
|
+
end
|
19
|
+
if ct.linker.nil? and not pt.linker.nil?
|
20
|
+
ct.setLinker(pt.linker)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def manipulateLineNumbers(ar)
|
25
|
+
ar.each { |l| l.line_number -= 1000000 if l.line_number > 0 }
|
26
|
+
end
|
27
|
+
|
28
|
+
def merge()
|
29
|
+
|
30
|
+
# Valid for all config types
|
31
|
+
|
32
|
+
@child.setDependency(@parent.dependency + @child.dependency)
|
33
|
+
|
34
|
+
manipulateLineNumbers(@parent.exLib)
|
35
|
+
manipulateLineNumbers(@parent.exLibSearchPath)
|
36
|
+
manipulateLineNumbers(@parent.userLibrary)
|
37
|
+
|
38
|
+
@child.setExLib(@parent.exLib + @child.exLib)
|
39
|
+
@child.setExLibSearchPath(@parent.exLibSearchPath + @child.exLibSearchPath)
|
40
|
+
@child.setUserLibrary(@parent.userLibrary + @child.userLibrary)
|
41
|
+
|
42
|
+
if not @parent.preSteps.nil?
|
43
|
+
if (@child.preSteps.nil?)
|
44
|
+
@child.setPreSteps(@parent.preSteps)
|
45
|
+
else
|
46
|
+
@child.preSteps.setStep(@parent.preSteps.step + @child.preSteps.step)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
if not @parent.postSteps.nil?
|
51
|
+
if (@child.postSteps.nil?)
|
52
|
+
@child.setPostSteps(@parent.postSteps)
|
53
|
+
else
|
54
|
+
@child.postSteps.setStep(@parent.postSteps.step + @child.postSteps.step)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
pt = @parent.defaultToolchain
|
59
|
+
ct = @child.defaultToolchain
|
60
|
+
|
61
|
+
if not pt.nil?
|
62
|
+
if (ct.nil?)
|
63
|
+
@child.setDefaultToolchain(pt)
|
64
|
+
else
|
65
|
+
mergeToolchain(pt,ct)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# Valid for custom config
|
70
|
+
|
71
|
+
if (Metamodel::CustomConfig === @child && Metamodel::CustomConfig === @parent)
|
72
|
+
@child.setStep(@parent.step) if @child.step.nil? and not @parent.step.nil?
|
73
|
+
end
|
74
|
+
|
75
|
+
# Valid for library and exe config
|
76
|
+
|
77
|
+
if ((Metamodel::LibraryConfig === @child || Metamodel::ExecutableConfig === @child) && (Metamodel::LibraryConfig === @parent || Metamodel::ExecutableConfig === @parent))
|
78
|
+
|
79
|
+
@child.setFiles(@parent.files + @child.files)
|
80
|
+
@child.setExcludeFiles(@parent.excludeFiles + @child.excludeFiles)
|
81
|
+
@child.setIncludeDir(@parent.includeDir + @child.includeDir)
|
82
|
+
|
83
|
+
pt = @parent.toolchain
|
84
|
+
ct = @child.toolchain
|
85
|
+
|
86
|
+
if not pt.nil?
|
87
|
+
if (ct.nil?)
|
88
|
+
@child.setToolchain(pt)
|
89
|
+
else
|
90
|
+
mergeToolchain(pt,ct)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
# Valid for exe config
|
97
|
+
|
98
|
+
if (Metamodel::ExecutableConfig === @child && Metamodel::ExecutableConfig === @parent)
|
99
|
+
@child.setLinkerScript(@parent.linkerScript) if @child.linkerScript.nil? and not @parent.linkerScript.nil?
|
100
|
+
@child.setArtifactName(@parent.artifactName) if @child.artifactName.nil? and not @parent.artifactName.nil?
|
101
|
+
@child.setMapFile(@parent.mapFile) if @child.mapFile.nil? and not @parent.mapFile.nil?
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
data/lib/bake/model/metamodel.rb
CHANGED
@@ -153,6 +153,7 @@ module Cxxproject
|
|
153
153
|
|
154
154
|
class BaseConfig_INTERNAL < ModelElement
|
155
155
|
has_attr 'name', String, :defaultValueLiteral => ""
|
156
|
+
has_attr 'extends', String, :defaultValueLiteral => ""
|
156
157
|
contains_one 'preSteps', PreSteps, 'parent'
|
157
158
|
contains_one 'postSteps', PostSteps, 'parent'
|
158
159
|
contains_many 'userLibrary', UserLibrary, 'parent'
|
data/lib/bake/version.rb
CHANGED
data/lib/tocxx.rb
CHANGED
@@ -9,6 +9,7 @@ require 'bake/model/metamodel_ext'
|
|
9
9
|
require 'bake/util'
|
10
10
|
require 'bake/cache'
|
11
11
|
require 'bake/subst'
|
12
|
+
require 'bake/mergeConfig'
|
12
13
|
require 'cxxproject/buildingblocks/module'
|
13
14
|
require 'cxxproject/buildingblocks/makefile'
|
14
15
|
require 'cxxproject/buildingblocks/executable'
|
@@ -189,6 +190,33 @@ module Cxxproject
|
|
189
190
|
res
|
190
191
|
end
|
191
192
|
|
193
|
+
|
194
|
+
def getFullProject(configs, configname, filename)
|
195
|
+
config = nil
|
196
|
+
configs.each do |c|
|
197
|
+
if c.name == configname
|
198
|
+
if config
|
199
|
+
Printer.printError "Error: Config '#{configname}' found more than once in '#{filename}'"
|
200
|
+
ExitHelper.exit(1)
|
201
|
+
end
|
202
|
+
config = c
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
if not config
|
207
|
+
Printer.printError "Error: Config '#{configname}' not found in '#{filename}'"
|
208
|
+
ExitHelper.exit(1)
|
209
|
+
end
|
210
|
+
|
211
|
+
if config.extends != ""
|
212
|
+
parent = getFullProject(configs, config.extends, filename)
|
213
|
+
MergeConfig.new(config, parent).merge()
|
214
|
+
end
|
215
|
+
|
216
|
+
config
|
217
|
+
end
|
218
|
+
|
219
|
+
|
192
220
|
def loadProjMeta(loader, filename, configname)
|
193
221
|
@project_files << filename
|
194
222
|
f = loader.load(filename)
|
@@ -202,14 +230,10 @@ module Cxxproject
|
|
202
230
|
|
203
231
|
f.root_elements.each do |e|
|
204
232
|
x = e.getConfig
|
233
|
+
config = getFullProject(x,configname,filename)
|
234
|
+
|
205
235
|
x.each do |y|
|
206
|
-
if y
|
207
|
-
if config
|
208
|
-
Printer.printError "Error: Config '#{configname}' found more than once in '#{filename}'"
|
209
|
-
ExitHelper.exit(1)
|
210
|
-
end
|
211
|
-
config = y
|
212
|
-
else
|
236
|
+
if y != config
|
213
237
|
e.removeGeneric("Config", y)
|
214
238
|
end
|
215
239
|
end
|
@@ -237,7 +261,11 @@ module Cxxproject
|
|
237
261
|
|
238
262
|
potentialProjs = []
|
239
263
|
@options.roots.each do |r|
|
240
|
-
|
264
|
+
if (r.length == 3 && r.include?(":/"))
|
265
|
+
r = r + @mainProjectName # glob would not work otherwise on windows (ruby bug?)
|
266
|
+
end
|
267
|
+
r = r+"/**{,/*/**}/Project.meta"
|
268
|
+
potentialProjs.concat(Dir.glob(r))
|
241
269
|
end
|
242
270
|
|
243
271
|
potentialProjs = potentialProjs.uniq.sort unless potentialProjs.empty?
|
@@ -355,9 +383,8 @@ module Cxxproject
|
|
355
383
|
integrateToolchain(@defaultToolchain, @mainConfig.defaultToolchain)
|
356
384
|
|
357
385
|
end
|
358
|
-
|
359
|
-
def convert2bb
|
360
386
|
|
387
|
+
def convert2bb
|
361
388
|
@project2config.each do |projName, config|
|
362
389
|
|
363
390
|
projDir = config.parent.get_project_dir
|
@@ -481,7 +508,7 @@ module Cxxproject
|
|
481
508
|
|
482
509
|
bbModule.main_content.set_source_patterns(srcs)
|
483
510
|
bbModule.main_content.set_exclude_sources(ex_srcs)
|
484
|
-
|
511
|
+
|
485
512
|
tcsMapConverted = {}
|
486
513
|
srcs = config.files.each do |f|
|
487
514
|
if (f.define.length > 0 or f.flags.length > 0)
|
@@ -637,7 +664,7 @@ module Cxxproject
|
|
637
664
|
|
638
665
|
substVars
|
639
666
|
convert2bb
|
640
|
-
|
667
|
+
|
641
668
|
#################################################
|
642
669
|
|
643
670
|
startBBName = "Project "+@options.project
|
metadata
CHANGED
@@ -1,66 +1,74 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: bake-toolkit
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 1.0.24
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.25
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
6
|
+
authors:
|
8
7
|
- Alexander Schaal
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2014-01-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
16
14
|
name: cxxproject
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.5.69
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.5.70
|
24
20
|
type: :runtime
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: rtext
|
28
21
|
prerelease: false
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.5.70
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rtext
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
34
33
|
version: 0.2.0
|
35
34
|
type: :runtime
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rgen
|
39
35
|
prerelease: false
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.2.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rgen
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
45
47
|
version: 0.6.0
|
46
48
|
type: :runtime
|
47
|
-
|
48
|
-
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.6.0
|
55
|
+
description: |2
|
56
|
+
This build tool is used to compile projects fast and easy.
|
49
57
|
email: alexander.schaal@esrlabs.com
|
50
|
-
executables:
|
58
|
+
executables:
|
51
59
|
- bake
|
52
60
|
- bakery
|
53
61
|
- createVSProjects
|
62
|
+
- bake-doc
|
54
63
|
extensions: []
|
55
|
-
|
56
64
|
extra_rdoc_files: []
|
57
|
-
|
58
|
-
files:
|
65
|
+
files:
|
59
66
|
- lib/alias/loader.rb
|
60
67
|
- lib/alias/model/language.rb
|
61
68
|
- lib/alias/model/metamodel.rb
|
62
69
|
- lib/bake/cache.rb
|
63
70
|
- lib/bake/loader.rb
|
71
|
+
- lib/bake/mergeConfig.rb
|
64
72
|
- lib/bake/model/language.rb
|
65
73
|
- lib/bake/model/metamodel.rb
|
66
74
|
- lib/bake/model/metamodel_ext.rb
|
@@ -78,37 +86,66 @@ files:
|
|
78
86
|
- lib/tocxx.rb
|
79
87
|
- lib/vs/options.rb
|
80
88
|
- Rakefile.rb
|
89
|
+
- doc/cmd/install.html
|
90
|
+
- doc/cmd/mount.png
|
91
|
+
- doc/cmd/ruby.png
|
92
|
+
- doc/cmd/tty.png
|
93
|
+
- doc/cmd/usecmd.html
|
94
|
+
- doc/cmd/usecygwin.html
|
95
|
+
- doc/concepts/buildhierarchy.html
|
96
|
+
- doc/concepts/configfile.html
|
97
|
+
- doc/concepts/hier.png
|
98
|
+
- doc/concepts/mainproject.html
|
99
|
+
- doc/dyk/keys.png
|
100
|
+
- doc/dyk/tipps.html
|
101
|
+
- doc/eclipse/export.html
|
102
|
+
- doc/eclipse/import.html
|
103
|
+
- doc/eclipse/install.html
|
104
|
+
- doc/eclipse/new.html
|
105
|
+
- doc/eclipse/use.html
|
106
|
+
- doc/further/change.html
|
107
|
+
- doc/further/collections.html
|
108
|
+
- doc/further/internal.html
|
109
|
+
- doc/further/issues.html
|
110
|
+
- doc/further/perf.html
|
111
|
+
- doc/further/wish.html
|
112
|
+
- doc/src/ok.png
|
113
|
+
- doc/syntax/derive.html
|
114
|
+
- doc/syntax/subst.html
|
115
|
+
- doc/syntax/syntax.html
|
116
|
+
- doc/vs/create.html
|
117
|
+
- doc/vs/install.html
|
118
|
+
- doc/vs/use.html
|
119
|
+
- doc/index.html
|
81
120
|
- license.txt
|
82
121
|
- bin/bake
|
83
122
|
- bin/bakery
|
84
123
|
- bin/createVSProjects
|
124
|
+
- bin/bake-doc
|
85
125
|
homepage: http://www.esrlabs.com
|
86
|
-
licenses:
|
87
|
-
|
126
|
+
licenses:
|
127
|
+
- MIT
|
128
|
+
metadata: {}
|
88
129
|
post_install_message:
|
89
|
-
rdoc_options:
|
130
|
+
rdoc_options:
|
90
131
|
- -x
|
91
132
|
- doc
|
92
|
-
require_paths:
|
133
|
+
require_paths:
|
93
134
|
- lib
|
94
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: "0"
|
135
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - '>='
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - '>='
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
106
145
|
requirements: []
|
107
|
-
|
108
146
|
rubyforge_project:
|
109
|
-
rubygems_version:
|
147
|
+
rubygems_version: 2.0.14
|
110
148
|
signing_key:
|
111
|
-
specification_version:
|
149
|
+
specification_version: 4
|
112
150
|
summary: Frontend for cxxproject.
|
113
151
|
test_files: []
|
114
|
-
|