bake-toolkit 2.1.1 → 2.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/doc/deployDoc.bat +1 -1
- data/doc/further/change.html +12 -1
- data/doc/index.html +1 -1
- data/doc/syntax/derive.html +18 -71
- data/doc/syntax/subst.html +8 -9
- data/lib/bake/mergeConfig.rb +73 -33
- data/lib/bake/subst.rb +64 -6
- data/lib/blocks/blockBase.rb +2 -2
- data/lib/blocks/compile.rb +2 -1
- data/lib/common/process.rb +3 -2
- data/lib/common/version.rb +1 -1
- data/lib/tocxx.rb +4 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3204adfeb6e87ba1ad87e217e3a873c81e9b21db
|
4
|
+
data.tar.gz: 69d5e65f7a40485d903eb5440ea7890842bef298
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4dcccbf9cd13df565e27c6044cf10558945b79b6631e93d9ae37471a114daab40e3349d0d31ba478d1bf6017d394e15c9b7dd5038a14fca5ed9aedf22e63cfb3
|
7
|
+
data.tar.gz: c9b1a7423f45820a1ffc68be7b12cd16038a4faedae204f57127252de1af0c8754c16f93ef52649d439117eac0251ec32413ed19cc273bb563ca60365d534166
|
data/doc/deployDoc.bat
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
scp -r "./" "aschaal@
|
1
|
+
scp -P 31953 -r "./" "aschaal@173.230.139.188:/srv/www/esrlabs.com/wordpress/gems/doc/bake-toolkit/"
|
2
2
|
pause
|
data/doc/further/change.html
CHANGED
@@ -7,9 +7,20 @@
|
|
7
7
|
<body>
|
8
8
|
<h1>Changelog</h1>
|
9
9
|
|
10
|
+
February 19, 2015 - bake-toolkit 2.2.2<br>
|
11
|
+
<ul>
|
12
|
+
<li><b>Changed: output dirs are now prefixed with "build_" per default</b>
|
13
|
+
<li><b>Changed: introduced complex variable $(OutputDir,projectName,configName)</b>
|
14
|
+
<li><b>Changed: reworked merge strategy of two configs, especially toolchain options</b>
|
15
|
+
<li><b>Added: variables can be nested now</b>
|
16
|
+
<li><b>Bugfix: fixed dependency header check for Unix when running Windows on a virtual machine</b>
|
17
|
+
<li><b>Bugfix: variable OutputDir did not take overwritten output directory from toolchain into account</b>
|
18
|
+
<li><b>Cosmetic: do not show internal pipes anymore when printing command lines</b>
|
19
|
+
</ul>
|
20
|
+
|
10
21
|
January 26, 2015 - bake-toolkit 2.1.1<br>
|
11
22
|
<ul>
|
12
|
-
<li><b>Bugfix: dependent header file check in 2.1.0
|
23
|
+
<li><b>Bugfix: dependent header file check in 2.1.0 was broken</b>
|
13
24
|
<li><b>Changed: files defined via glob pattern are sorted alphabetically now</b>
|
14
25
|
</ul>
|
15
26
|
|
data/doc/index.html
CHANGED
@@ -72,7 +72,7 @@ bake is used to build software <font color="#009900"><b>fast</b></font> and <fon
|
|
72
72
|
|
73
73
|
<p>
|
74
74
|
<hr>
|
75
|
-
<table width="100%" border="0"><tr><td align="left">Described bake-toolkit version: 2.
|
75
|
+
<table width="100%" border="0"><tr><td align="left">Described bake-toolkit version: 2.2.2</td><td align="right">February 19, 2015</td></tr></table>
|
76
76
|
|
77
77
|
</body>
|
78
78
|
|
data/doc/syntax/derive.html
CHANGED
@@ -21,16 +21,16 @@ A config can be derived from another config in Project.meta like this:
|
|
21
21
|
The config type of the parent config does not matter, but only settings which are valid in BOTH configs will be inherited.<br>
|
22
22
|
In the example above D gets the dependencies from A, because "Dependency" is valid in all configs, but D does not get the "Files" from A, because "Files" is not valid in CustomConfig.
|
23
23
|
<p>
|
24
|
-
The following listing shows
|
24
|
+
The following listing shows how settings will be derived (toolchains below):
|
25
25
|
|
26
26
|
<table border="1">
|
27
27
|
<tr><th bgcolor="#CCCCCC">Setting</th><th bgcolor="#CCCCCC">Derived</th></tr>
|
28
|
-
<tr><td>
|
29
|
-
<tr><td>
|
28
|
+
<tr><td>Set</td> <td>parent + child</td></tr>
|
29
|
+
<tr><td>Dependency</td> <td>parent + child</td></tr>
|
30
|
+
<tr><td>ExternalLibrary<br>ExternalLibrarySearchPath<br>UserLibrary</td> <td>parent + child<br>(ordered by line number!)</td></tr>
|
30
31
|
<tr><td>PreSteps</td> <td>parent + child</td></tr>
|
31
32
|
<tr><td>PostSteps</td> <td>parent + child</td></tr>
|
32
|
-
<tr><td>
|
33
|
-
<tr><td>Makefile/CommandLine<br>(in CustomConfig)</td> <td>used from parent if not in child</td></tr>
|
33
|
+
<tr><td>Makefile<br>CommandLine<br>(in CustomConfig)</td> <td>used from parent if not in child</td></tr>
|
34
34
|
<tr><td>Files</td> <td>parent + child</td></tr>
|
35
35
|
<tr><td>ExcludeFiles</td> <td>parent + child</td></tr>
|
36
36
|
<tr><td>IncludeDir</td> <td>parent + child</td></tr>
|
@@ -38,73 +38,20 @@ The following listing shows HOW settings will be derived:
|
|
38
38
|
<tr><td>ArtifactName</td> <td>used from parent if not in child</td></tr>
|
39
39
|
<tr><td>MapFile</td> <td>used from parent if not in child</td></tr>
|
40
40
|
</table>
|
41
|
-
<
|
42
|
-
<h3>Example for deriving toolchains:</h3>
|
43
|
-
|
44
|
-
<pre id="rundrum"><code>ExecutableConfig A {
|
45
|
-
Toolchain {
|
46
|
-
Compiler CPP {
|
47
|
-
Define "DefA"
|
48
|
-
}
|
49
|
-
Linker {
|
50
|
-
Flags "-O3"
|
51
|
-
}
|
52
|
-
}
|
53
|
-
}
|
54
|
-
|
55
|
-
ExecutableConfig B, extends: A {
|
56
|
-
Toolchain {
|
57
|
-
Compiler CPP {
|
58
|
-
Define "DefB1"
|
59
|
-
}
|
60
|
-
Compiler ASM {
|
61
|
-
Define "DefB2"
|
62
|
-
}
|
63
|
-
Archiver {
|
64
|
-
Flags "-B"
|
65
|
-
}
|
66
|
-
}
|
67
|
-
}</code></pre>
|
68
|
-
|
69
|
-
B derives from A, but B redefines Compiler CPP, therefore "DefA" will not be defined in B. But the toolchain of B does not include a Linker tag, therefore the Linker will be inherited.<br>
|
70
|
-
The toolchain of B is treated like this:
|
71
|
-
|
72
|
-
<pre id="rundrum"><code>Toolchain {
|
73
|
-
Compiler CPP {
|
74
|
-
Define "DefB1"
|
75
|
-
}
|
76
|
-
Compiler ASM {
|
77
|
-
Define "DefB2"
|
78
|
-
}
|
79
|
-
Archiver {
|
80
|
-
Flags "-B"
|
81
|
-
}
|
82
|
-
Linker {
|
83
|
-
Flags "-O3"
|
84
|
-
}
|
85
|
-
}</code></pre>
|
86
|
-
|
87
|
-
<h3>Example for deriving dependencies:</h3>
|
88
|
-
|
89
|
-
<pre id="rundrum"><code>ExecutableConfig A {
|
90
|
-
Dependency Sub1, config s1
|
91
|
-
Dependency Sub2, config s2
|
92
|
-
Dependency Sub3, config s3
|
93
|
-
}
|
94
|
-
|
95
|
-
ExecutableConfig B, extends: A {
|
96
|
-
Dependency Sub4, config s4
|
97
|
-
Dependency Sub1, config sOther
|
98
|
-
Dependency Sub5, config s5
|
99
|
-
}</code></pre>
|
100
|
-
|
101
|
-
The dependencies of B will be treated like this:
|
41
|
+
<p>
|
102
42
|
|
103
|
-
<
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
43
|
+
<table border="1">
|
44
|
+
<tr><th bgcolor="#CCCCCC">(Default)Toolchain<br>Setting</th><th bgcolor="#CCCCCC">Derived</th></tr>
|
45
|
+
<tr><td>basedOn</td> <td>used from parent if not in child</td></tr>
|
46
|
+
<tr><td>outputDir</td> <td>used from parent if not in child</td></tr>
|
47
|
+
<tr><td>command</td> <td>used from parent if not in child</td></tr>
|
48
|
+
<tr><td>LibPrefixFlags<br>LibPostfixFlags<br>Flags</td> <td>parent + child</td></tr>
|
49
|
+
<tr><td>Define</td> <td>parent + child</td></tr>
|
50
|
+
<tr><td>InternalDefines<br>InternalIncludes<br>(in CustomConfig)</td> <td>used from parent if not in child</td></tr>
|
51
|
+
<tr><td>LintPolicy</td> <td>parent + child</td></tr>
|
52
|
+
<tr><td>Docu</td> <td>used from parent if not in child</td></tr>
|
53
|
+
</table>
|
54
|
+
<br>
|
108
55
|
|
109
56
|
</body>
|
110
57
|
|
data/doc/syntax/subst.html
CHANGED
@@ -36,7 +36,8 @@ bake includes also some standard variables:
|
|
36
36
|
<tr><td>$(ProjectName)</td> <td>canDriver</td></tr>
|
37
37
|
<tr><td>$(ProjectDir)</td> <td>C:/Root/MyProject</td></tr>
|
38
38
|
<tr><td>$(MainProjectDir)</td> <td>C:/Root/Main</td></tr>
|
39
|
-
<tr><td>$(OutputDir)</td> <td>
|
39
|
+
<tr><td>$(OutputDir)</td> <td>build_lib_bootloader_Debug<br><i>output dir of the current config</i></td></tr>
|
40
|
+
<tr><td>$(OutputDir,<i>projName</i>,<i>confName</i>)</td> <td><i>output dir of a specific config<br>relative to the current project</i></td></tr>
|
40
41
|
<tr><td>$(ArtifactName)</td> <td>bootloader_1.0.elf</td></tr>
|
41
42
|
<tr><td>$(ArtifactNameBase)</td> <td>bootloader_1.0</td></tr>
|
42
43
|
<tr><td>$(Time)</td> <td>2012-12-24 20:00:00 +0200</td></tr>
|
@@ -69,21 +70,19 @@ If the environment variable does not exist, it will be substituted by an empty s
|
|
69
70
|
<p>
|
70
71
|
Note, that variables in <b>Dependency</b> definitions are not allowed.
|
71
72
|
|
72
|
-
<h3>Equal variables</h3>
|
73
|
+
<h3>Equal variables in the main config</h3>
|
73
74
|
|
74
|
-
<h4>In main project</h4>
|
75
75
|
<table border="1">
|
76
76
|
<tr><th bgcolor="#CCCCCC">Variable</th><th bgcolor="#CCCCCC">is equal to</th></tr>
|
77
77
|
<tr><td>$(MainConfigName)</td> <td>$(ConfigName)</td></tr>
|
78
78
|
<tr><td>$(MainProjectName)</td> <td>$(ProjectName)</td></tr>
|
79
|
-
<tr><td>$(OutputDir)</td> <td>$(MainConfigName)</td></tr>
|
80
79
|
</table>
|
81
80
|
|
82
|
-
<
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
</
|
81
|
+
<h3>Nested variables</h3>
|
82
|
+
|
83
|
+
Variables can be nested like this:
|
84
|
+
<pre id="rundrum"><code>$(OutputDir,$(TheProject),$(TheConfig))
|
85
|
+
$(ABC$(DEF)GH)</code></pre>
|
87
86
|
|
88
87
|
<h3>Auto-adjustment of paths to existing projects</h3>
|
89
88
|
|
data/lib/bake/mergeConfig.rb
CHANGED
@@ -7,18 +7,68 @@ module Bake
|
|
7
7
|
@parent = parent
|
8
8
|
end
|
9
9
|
|
10
|
-
def mergeToolchain(pt,ct)
|
10
|
+
def mergeToolchain(pt,ct, isDefault)
|
11
11
|
pt.compiler.each do |pc|
|
12
|
-
|
13
|
-
|
12
|
+
found = false
|
13
|
+
ct.compiler.each do |cc|
|
14
|
+
if cc.ctype == pc.ctype
|
15
|
+
found = true
|
16
|
+
cc.setFlags(pc.flags + cc.flags)
|
17
|
+
cc.setDefine(pc.define + cc.define)
|
18
|
+
if cc.internalDefines.nil? and not pc.internalDefines.nil?
|
19
|
+
cc.setInternalDefines(pc.internalDefines)
|
20
|
+
end
|
21
|
+
if cc.command == "" and pc.command != ""
|
22
|
+
cc.setCommand(pc.command)
|
23
|
+
end
|
24
|
+
end
|
14
25
|
end
|
26
|
+
ct.addCompiler(pc) if not found
|
15
27
|
end
|
16
|
-
|
17
|
-
|
28
|
+
|
29
|
+
if not pt.archiver.nil?
|
30
|
+
if (ct.archiver.nil?)
|
31
|
+
ct.setArchiver(pt.archiver)
|
32
|
+
else
|
33
|
+
if ct.archiver.command == "" and pt.archiver.command != ""
|
34
|
+
ct.archiver.setCommand(pt.archiver.command)
|
35
|
+
end
|
36
|
+
ct.archiver.setFlags(pt.archiver.flags + ct.archiver.flags)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
if not pt.linker.nil?
|
41
|
+
if (ct.linker.nil?)
|
42
|
+
ct.setLinker(pt.linker)
|
43
|
+
else
|
44
|
+
if ct.linker.command == "" and pt.linker.command != ""
|
45
|
+
ct.linker.setCommand(pt.linker.command)
|
46
|
+
end
|
47
|
+
ct.linker.setFlags(pt.linker.flags + ct.linker.flags)
|
48
|
+
ct.linker.setLibprefixflags(pt.linker.libprefixflags + ct.linker.libprefixflags)
|
49
|
+
ct.linker.setLibpostfixflags(pt.linker.libpostfixflags + ct.linker.libpostfixflags)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
if ct.outputDir == "" and pt.outputDir != ""
|
54
|
+
ct.setOutputDir(pt.outputDir)
|
55
|
+
end
|
56
|
+
|
57
|
+
if ct.docu.nil? and not pt.docu.nil?
|
58
|
+
ct.setDocu(pt.docu)
|
18
59
|
end
|
19
|
-
|
20
|
-
|
60
|
+
|
61
|
+
ct.setLintPolicy(pt.lintPolicy + ct.lintPolicy)
|
62
|
+
|
63
|
+
if (isDefault)
|
64
|
+
if ct.basedOn == "" and pt.basedOn != ""
|
65
|
+
ct.setBasedOn(pt.basedOn)
|
66
|
+
end
|
67
|
+
if ct.internalIncludes.nil? and not pt.internalIncludes.nil?
|
68
|
+
ct.setInternalIncludes(pt.internalIncludes)
|
69
|
+
end
|
21
70
|
end
|
71
|
+
|
22
72
|
end
|
23
73
|
|
24
74
|
def manipulateLineNumbers(ar)
|
@@ -31,15 +81,7 @@ module Bake
|
|
31
81
|
|
32
82
|
deps = @parent.dependency
|
33
83
|
@child.dependency.each do |cd|
|
34
|
-
|
35
|
-
deps.each do |pd|
|
36
|
-
if pd.name == cd.name
|
37
|
-
pd.config = cd.config
|
38
|
-
overwrite = true
|
39
|
-
break
|
40
|
-
end
|
41
|
-
end
|
42
|
-
deps << cd if not overwrite
|
84
|
+
deps << cd if deps.none? {|pd| pd.name == cd.name and pd.config == cd.config }
|
43
85
|
end
|
44
86
|
@child.setDependency(deps)
|
45
87
|
|
@@ -76,7 +118,18 @@ module Bake
|
|
76
118
|
if (ct.nil?)
|
77
119
|
@child.setDefaultToolchain(pt)
|
78
120
|
else
|
79
|
-
mergeToolchain(pt,ct)
|
121
|
+
mergeToolchain(pt,ct,true)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
pt = @parent.toolchain
|
126
|
+
ct = @child.toolchain
|
127
|
+
|
128
|
+
if not pt.nil?
|
129
|
+
if (ct.nil?)
|
130
|
+
@child.setToolchain(pt)
|
131
|
+
else
|
132
|
+
mergeToolchain(pt,ct,false)
|
80
133
|
end
|
81
134
|
end
|
82
135
|
|
@@ -89,22 +142,9 @@ module Bake
|
|
89
142
|
# Valid for library and exe config
|
90
143
|
|
91
144
|
if ((Metamodel::LibraryConfig === @child || Metamodel::ExecutableConfig === @child) && (Metamodel::LibraryConfig === @parent || Metamodel::ExecutableConfig === @parent))
|
92
|
-
|
93
|
-
@child.setFiles(@parent.files + @child.files)
|
145
|
+
@child.setFiles(@parent.files + @child.files)
|
94
146
|
@child.setExcludeFiles(@parent.excludeFiles + @child.excludeFiles)
|
95
|
-
@child.setIncludeDir(@parent.includeDir
|
96
|
-
|
97
|
-
pt = @parent.toolchain
|
98
|
-
ct = @child.toolchain
|
99
|
-
|
100
|
-
if not pt.nil?
|
101
|
-
if (ct.nil?)
|
102
|
-
@child.setToolchain(pt)
|
103
|
-
else
|
104
|
-
mergeToolchain(pt,ct)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
147
|
+
@child.setIncludeDir(@parent.includeDir + @child.includeDir)
|
108
148
|
end
|
109
149
|
|
110
150
|
# Valid for exe config
|
@@ -112,7 +152,7 @@ module Bake
|
|
112
152
|
if (Metamodel::ExecutableConfig === @child && Metamodel::ExecutableConfig === @parent)
|
113
153
|
@child.setLinkerScript(@parent.linkerScript) if @child.linkerScript.nil? and not @parent.linkerScript.nil?
|
114
154
|
@child.setArtifactName(@parent.artifactName) if @child.artifactName.nil? and not @parent.artifactName.nil?
|
115
|
-
@child.setMapFile(@parent.mapFile)
|
155
|
+
@child.setMapFile(@parent.mapFile) if @child.mapFile.nil? and not @parent.mapFile.nil?
|
116
156
|
end
|
117
157
|
|
118
158
|
end
|
data/lib/bake/subst.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
1
3
|
module Bake
|
2
4
|
|
3
5
|
class Subst
|
@@ -35,10 +37,12 @@ module Bake
|
|
35
37
|
@@lazy = false
|
36
38
|
end
|
37
39
|
|
38
|
-
def self.itute(config, projName, isMainProj, toolchain)
|
40
|
+
def self.itute(config, projName, isMainProj, toolchain, loadedConfig, configTcMap)
|
39
41
|
@@lazy = true
|
40
42
|
@@config = config
|
41
43
|
@@toolchain = toolchain
|
44
|
+
@@loadedConfig = loadedConfig
|
45
|
+
@@configTcMap = configTcMap
|
42
46
|
|
43
47
|
@@configName = config.name
|
44
48
|
@@projDir = config.parent.get_project_dir
|
@@ -127,11 +131,24 @@ module Bake
|
|
127
131
|
break if posStart.nil?
|
128
132
|
posEnd = str.index(")", posStart)
|
129
133
|
break if posEnd.nil?
|
134
|
+
posStartSub = str.index("$(", posStart+1)
|
135
|
+
if (not posStartSub.nil? and posStartSub < posEnd) # = nested vars
|
136
|
+
newStr = str[0,posStartSub] + substString(str[posStartSub..posEnd],elem)
|
137
|
+
if (str.length + 1 > posEnd)
|
138
|
+
str = newStr + str[posEnd+1..-1]
|
139
|
+
else
|
140
|
+
str = newStr
|
141
|
+
end
|
142
|
+
next
|
143
|
+
end
|
144
|
+
|
130
145
|
substStr << str[posSubst..posStart-1] if posStart>0
|
131
146
|
|
132
147
|
@@resolvedVars += 1
|
133
148
|
var = str[posStart+2..posEnd-1]
|
134
149
|
|
150
|
+
splittedVar = var.split(",")
|
151
|
+
|
135
152
|
if Bake.options.vars.has_key?(var)
|
136
153
|
substStr << Bake.options.vars[var]
|
137
154
|
elsif @@userVarMap.has_key?(var)
|
@@ -148,11 +165,53 @@ module Bake
|
|
148
165
|
substStr << @@projName
|
149
166
|
elsif var == "ProjectDir"
|
150
167
|
substStr << @@projDir
|
151
|
-
elsif var == "OutputDir"
|
152
|
-
if
|
153
|
-
|
168
|
+
elsif var == "OutputDir" or (splittedVar.length == 3 and splittedVar[0] == "OutputDir")
|
169
|
+
if (var == "OutputDir")
|
170
|
+
out_proj_name = @@projName
|
171
|
+
out_conf_name = @@configName
|
154
172
|
else
|
155
|
-
|
173
|
+
out_proj_name = splittedVar[1].strip
|
174
|
+
out_conf_name = splittedVar[2].strip
|
175
|
+
end
|
176
|
+
if @@loadedConfig.referencedConfigs.has_key?out_proj_name
|
177
|
+
configs = @@loadedConfig.referencedConfigs[out_proj_name]
|
178
|
+
config = configs.select {|c| c.name == out_conf_name }.first
|
179
|
+
if config
|
180
|
+
out_dir = nil
|
181
|
+
if (config.toolchain and config.toolchain.outputDir and config.toolchain.outputDir != "")
|
182
|
+
out_dir = config.toolchain.outputDir
|
183
|
+
else
|
184
|
+
out_dir = @@configTcMap[config][:OUTPUT_DIR]
|
185
|
+
end
|
186
|
+
if not out_dir
|
187
|
+
if out_proj_name == Bake.options.main_project_name and out_conf_name == Bake.options.build_config
|
188
|
+
out_dir = "build_" + Bake.options.build_config
|
189
|
+
else
|
190
|
+
out_dir = "build_" + out_conf_name + "_" + Bake.options.main_project_name + "_" + Bake.options.build_config
|
191
|
+
end
|
192
|
+
end
|
193
|
+
out_dir = substString(out_dir, elem)
|
194
|
+
if File.is_absolute?(out_dir)
|
195
|
+
substStr << out_dir
|
196
|
+
else
|
197
|
+
substStr << Pathname.new(File.rel_from_to_project(@@projDir,config.get_project_dir,true) + out_dir).cleanpath.to_s
|
198
|
+
end
|
199
|
+
else
|
200
|
+
if Bake.options.verbose > 0
|
201
|
+
msg = "Substitute variable '$(#{var})' with empty string, because config #{out_conf_name} not found for project #{out_proj_name}"
|
202
|
+
Bake.formatter.printInfo(msg, elem ? elem : @@config)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
else
|
206
|
+
if Bake.options.verbose > 0
|
207
|
+
msg = "Substitute variable '$(#{var})' with empty string, because project #{out_proj_name} not found"
|
208
|
+
Bake.formatter.printInfo(msg, elem ? elem : @@config)
|
209
|
+
end
|
210
|
+
end
|
211
|
+
elsif splittedVar.length > 1 and splittedVar[0] == "OutputDir"
|
212
|
+
if Bake.options.verbose > 0
|
213
|
+
msg = "Substitute variable '$(#{var})' with empty string, because syntax of complex variable OutputDir is not $(OutputDir,<project name>,<config name>)"
|
214
|
+
Bake.formatter.printInfo(msg, elem ? elem : @@config)
|
156
215
|
end
|
157
216
|
elsif var == "Time"
|
158
217
|
substStr << Time.now.to_s
|
@@ -196,7 +255,6 @@ module Bake
|
|
196
255
|
Bake.formatter.printInfo(msg + " in the toolchain", @@config)
|
197
256
|
end
|
198
257
|
end
|
199
|
-
substStr << ""
|
200
258
|
end
|
201
259
|
|
202
260
|
posSubst = posEnd + 1
|
data/lib/blocks/blockBase.rb
CHANGED
@@ -52,9 +52,9 @@ module Bake
|
|
52
52
|
p = @block.convPath(@tcs[:OUTPUT_DIR])
|
53
53
|
@output_dir = p
|
54
54
|
elsif @projectName == Bake.options.main_project_name and @config.name == Bake.options.build_config
|
55
|
-
@output_dir = Bake.options.build_config
|
55
|
+
@output_dir = "build_" + Bake.options.build_config
|
56
56
|
else
|
57
|
-
@output_dir = @config.name + "_" + Bake.options.main_project_name + "_" + Bake.options.build_config
|
57
|
+
@output_dir = "build_" + @config.name + "_" + Bake.options.main_project_name + "_" + Bake.options.build_config
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
data/lib/blocks/compile.rb
CHANGED
@@ -51,7 +51,8 @@ module Bake
|
|
51
51
|
# we need a hack here. with some windows configurations the compiler prints unix paths
|
52
52
|
# into the dep file which cannot be found easily. this will be true for system includes,
|
53
53
|
# e.g. /usr/lib/...xy.h
|
54
|
-
if Bake::Utils::OS.windows? and dep.start_with?"/"
|
54
|
+
if (Bake::Utils::OS.windows? and dep.start_with?"/") or
|
55
|
+
(not Bake::Utils::OS.windows? and dep.length > 1 and dep[1] == ":")
|
55
56
|
puts "Dependency header file #{dep} ignored!" if Bake.options.debug
|
56
57
|
else
|
57
58
|
return "because dependent header #{dep} does not exist"
|
data/lib/common/process.rb
CHANGED
@@ -7,9 +7,10 @@ module Bake
|
|
7
7
|
def self.run(cmdLineArray, immediateOutput=false, force=true, outpipe=nil)
|
8
8
|
rd, wr = IO.pipe
|
9
9
|
@@rd = rd if force
|
10
|
-
|
10
|
+
duppedCmdLineArray = cmdLineArray.dup
|
11
|
+
duppedCmdLineArray << { :err=>wr, :out=>(outpipe ? outpipe : wr) }
|
11
12
|
begin
|
12
|
-
pid = spawn(*
|
13
|
+
pid = spawn(*duppedCmdLineArray)
|
13
14
|
rescue Exception => e
|
14
15
|
return [false, e.message]
|
15
16
|
end
|
data/lib/common/version.rb
CHANGED
data/lib/tocxx.rb
CHANGED
@@ -61,11 +61,11 @@ module Bake
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def substVars
|
64
|
-
Subst.itute(@mainConfig, Bake.options.main_project_name, true, @configTcMap[@mainConfig])
|
64
|
+
Subst.itute(@mainConfig, Bake.options.main_project_name, true, @configTcMap[@mainConfig], @loadedConfig, @configTcMap)
|
65
65
|
@loadedConfig.referencedConfigs.each do |projName, configs|
|
66
66
|
configs.each do |config|
|
67
67
|
if config != @mainConfig
|
68
|
-
Subst.itute(config, projName, false, @configTcMap[config])
|
68
|
+
Subst.itute(config, projName, false, @configTcMap[config], @loadedConfig, @configTcMap)
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
@@ -93,7 +93,7 @@ module Bake
|
|
93
93
|
end
|
94
94
|
end
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
97
|
def convert2bb
|
98
98
|
@loadedConfig.referencedConfigs.each do |projName, configs|
|
99
99
|
configs.each do |config|
|
@@ -231,7 +231,6 @@ module Bake
|
|
231
231
|
createBaseTcsForConfig
|
232
232
|
substVars
|
233
233
|
createTcsForConfig
|
234
|
-
|
235
234
|
convert2bb
|
236
235
|
|
237
236
|
Blocks::Show.includes if Bake.options.show_includes
|
@@ -278,7 +277,7 @@ module Bake
|
|
278
277
|
Bake.formatter.printSuccess("\n#{taskType} done.")
|
279
278
|
end
|
280
279
|
rescue SystemExit
|
281
|
-
Bake.formatter.printError("\n#{taskType} failed.")
|
280
|
+
Bake.formatter.printError("\n#{taskType} failed.") if ExitHelper.exit_code != 0
|
282
281
|
end
|
283
282
|
|
284
283
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bake-toolkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Schaal
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rtext
|