bake-toolkit 2.1.1 → 2.2.2
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 +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
|