bake-toolkit 2.8.0 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58170fe54e9575b410a3040b0740572d01c8ed76
4
- data.tar.gz: 7cb74c4bdaa29a7ceaaad7992d81acc1bbcbdd00
3
+ metadata.gz: 8d7b3127c8cc5671a807254d3493ff59b326fb80
4
+ data.tar.gz: 2f073076a3c207ea02eb37b22f503753acd0ad40
5
5
  SHA512:
6
- metadata.gz: 03ff9074722334300b8d655fe0ce05d90b6ee175e0ac46245db891cff50b77abebd378a3efa8f6beeef748700d79bb46824f6b3f6387415f72333caaf997a5c3
7
- data.tar.gz: 4034ca912a9fe8d17fd9462984fe31e7e1c26cbaf96068de3b2d15f9e5300fea88f5adfcce4620c83a98a87d0cd3f679b38c6816a4ae815ea7ac9bdcead0e3b6
6
+ metadata.gz: 2316ef390f25fa482f317bd173ef8ac992046b15afc920b8c2a24116faeb856ef898f895f2fc35762b656c4965bb3af461398a2e2a9e34a1ec87084f316bcee1
7
+ data.tar.gz: 6bd20579645b276b447fb6810be9d9676dab6561818033597439d576f01f1b9f7b47b671803edf30edfcd0013cb7367800f3794db2530af3cad9d7817d12fc5f
@@ -7,6 +7,21 @@
7
7
  <body>
8
8
  <h1>Changelog</h1>
9
9
 
10
+ June 5, 2015 - bake-toolkit 2.9.0<br>
11
+ <ul>
12
+ <li><b>Added: "--create" command line option to create project templates</b>
13
+ <li><b>Added: "--conversion_info" command line option for bake conversion tool</b>
14
+ <li><b>Cosmetic: made output clearer if "--link_only" is used for non ExecutableConfigs</b>
15
+ </ul>
16
+
17
+ June 5, 2015 - Eclipse plugin 1.4.5<br>
18
+ <ul>
19
+ <li><b>Bugfix: input streams from bake were closed too early under Linux - console window output and AdjustCDT feature should work correctly now</b>
20
+ <li><b>Added: "Link This Project Only" shortcut added</b>
21
+ <li><b>Added: Files under "build_*" and ".bake" are now automatically marked as derived (not shown in "Open Resource" dialog)</b>
22
+ <li><b>Changed: error message dialog of AdjustCDT now displays the end instead of the beginning of very long error messages</b>
23
+ </ul>
24
+
10
25
  May 19, 2015 - bake-toolkit 2.8.0<br>
11
26
  <ul>
12
27
  <li><b>Bugfix: when building a project with <i>-p name</i>, not only <i>name</i> was built, but all projects which start with the string <i>name</i></b>
@@ -74,7 +74,7 @@ bake is used to build software <font color="#009900"><b>fast</b></font> and <fon
74
74
 
75
75
  <p>
76
76
  <hr>
77
- <table width="100%" border="0"><tr><td align="left">Described bake-toolkit version: 2.8.0</td><td align="right">May 19, 2015</td></tr></table>
77
+ <table width="100%" border="0"><tr><td align="left">Described bake-toolkit version: 2.9.0</td><td align="right">June 5, 2015</td></tr></table>
78
78
 
79
79
  </body>
80
80
 
@@ -0,0 +1,96 @@
1
+ require 'fileutils'
2
+
3
+ module Bake
4
+
5
+ class Create
6
+
7
+ def self.exeTemplate
8
+ "Project default: main {\n"+
9
+ "\n"+
10
+ " Responsible {\n"+
11
+ " Person \"#{ENV["USER"]}\"\n"+
12
+ " }\n"+
13
+ "\n"+
14
+ " ExecutableConfig main {\n"+
15
+ " # Dependency ...\n"+
16
+ " Files \"src/**/*.cpp\"\n"+
17
+ " IncludeDir \"include\"\n"+
18
+ " DefaultToolchain GCC\n"+
19
+ " }\n"+
20
+ "}\n"
21
+ end
22
+
23
+ def self.libTemplate
24
+ "Project default: lib {\n"+
25
+ "\n"+
26
+ " Responsible {\n"+
27
+ " Person \"#{ENV["USER"]}\"\n"+
28
+ " }\n"+
29
+ "\n"+
30
+ " LibraryConfig lib {\n"+
31
+ " Files \"src/**/*.cpp\"\n"+
32
+ " IncludeDir \"include\"\n"+
33
+ " }\n"+
34
+ "\n"+
35
+ " ExecutableConfig UnitTest {\n"+
36
+ " Dependency config: lib\n"+
37
+ " Files \"test/src/**/*.cpp\"\n"+
38
+ " IncludeDir \"include\"\n"+
39
+ " DefaultToolchain GCC\n"+
40
+ " }\n"+
41
+ "}\n"
42
+ end
43
+
44
+ def self.customTemplate
45
+ "Project default: lib {\n"+
46
+ "\n"+
47
+ " Responsible {\n"+
48
+ " Person \"#{ENV["USER"]}\"\n"+
49
+ " }\n"+
50
+ "\n"+
51
+ " CustomConfig lib {\n"+
52
+ " Files \"src/**/*.cpp\"\n"+
53
+ " IncludeDir \"include\"\n"+
54
+ " }\n"+
55
+ "}\n"
56
+ end
57
+
58
+ def self.mainTemplate
59
+ "int main()\n"+
60
+ "{\n"+
61
+ " return 0;\n"+
62
+ "}\n"
63
+ end
64
+
65
+ def self.checkFile(name)
66
+ if File.exists?(name)
67
+ puts "#{name} already exists"
68
+ ExitHelper.exit(1)
69
+ end
70
+ end
71
+
72
+ def self.proj(type)
73
+ checkFile("Project.meta")
74
+ checkFile("src/main.cpp") if (type == "exe")
75
+ FileUtils::mkdir_p "src"
76
+ FileUtils::mkdir_p "include"
77
+
78
+ if (type == "lib")
79
+ File.write("Project.meta", libTemplate);
80
+ elsif (type == "exe")
81
+ File.write("Project.meta", exeTemplate);
82
+ File.write("src/main.cpp", mainTemplate);
83
+ elsif (type == "custom")
84
+ File.write("Project.meta", customTemplate);
85
+ else
86
+ puts "'--create' must be followed by 'lib', 'exe' or 'custom'"
87
+ ExitHelper.exit(1)
88
+ end
89
+
90
+ puts "Project created."
91
+ ExitHelper.exit(1)
92
+ end
93
+
94
+ end
95
+
96
+ end
@@ -5,6 +5,7 @@ require 'bake/options/showConfigNames'
5
5
  require 'bake/options/showLicense'
6
6
  require 'bake/options/showDoc'
7
7
  require 'bake/options/usage'
8
+ require 'bake/options/create'
8
9
  require 'common/options/option'
9
10
 
10
11
  module Bake
@@ -20,7 +21,7 @@ module Bake
20
21
  attr_accessor :build_config, :nocache, :analyze, :eclipseOrder, :envToolchain
21
22
  attr_reader :main_dir, :project, :filename, :main_project_name, :cc2j_filename # String
22
23
  attr_reader :roots, :include_filter, :exclude_filter # String List
23
- attr_reader :stopOnFirstError, :clean, :rebuild, :show_includes, :show_includes_and_defines, :linkOnly, :no_autodir, :clobber, :lint, :docu, :debug, :prepro # Boolean
24
+ attr_reader :conversion_info, :stopOnFirstError, :clean, :rebuild, :show_includes, :show_includes_and_defines, :linkOnly, :no_autodir, :clobber, :lint, :docu, :debug, :prepro # Boolean
24
25
  attr_reader :threads, :socket, :lint_min, :lint_max # Fixnum
25
26
  attr_reader :vars # map
26
27
  attr_reader :verbose
@@ -30,6 +31,7 @@ module Bake
30
31
  def initialize(argv)
31
32
  super(argv)
32
33
 
34
+ @conversion_info = false
33
35
  @envToolchain = false
34
36
  @analyze = false
35
37
  @eclipseOrder = false
@@ -84,6 +86,9 @@ module Bake
84
86
  add_option(Option.new("--lint_min",true) { |x| @lint_min = String === x ? x.to_i : x })
85
87
  add_option(Option.new("--lint_max",true) { |x| @lint_max = String === x ? x.to_i : x })
86
88
 
89
+ add_option(Option.new("--create",true) { |x| Bake::Create.proj(x) })
90
+ add_option(Option.new("--conversion_info",false) { @conversion_info = true })
91
+
87
92
  add_option(Option.new("--docu",false) { @docu = true })
88
93
 
89
94
  add_option(Option.new("-v0",false) { @verbose = 0 })
@@ -128,6 +133,37 @@ module Bake
128
133
  end
129
134
  end
130
135
 
136
+ if @conversion_info
137
+ if @rebuild
138
+ Bake.formatter.printError("Error: --conversion_info and --rebuild not allowed at the same time")
139
+ ExitHelper.exit(1)
140
+ end
141
+ if @clean
142
+ Bake.formatter.printError("Error: --conversion_info and -c not allowed at the same time")
143
+ ExitHelper.exit(1)
144
+ end
145
+ if @prepro
146
+ Bake.formatter.printError("Error: --conversion_info and --prepro not allowed at the same time")
147
+ ExitHelper.exit(1)
148
+ end
149
+ if @linkOnly
150
+ Bake.formatter.printError("Error: --conversion_info and --linkOnly not allowed at the same time")
151
+ ExitHelper.exit(1)
152
+ end
153
+ if @lint
154
+ Bake.formatter.printError("Error: --conversion_info and --lint not allowed at the same time")
155
+ ExitHelper.exit(1)
156
+ end
157
+ if @docu
158
+ Bake.formatter.printError("Error: --conversion_info and --docu not allowed at the same time")
159
+ ExitHelper.exit(1)
160
+ end
161
+ if not @project
162
+ Bake.formatter.printError("Error: --conversion_info must be used with -p")
163
+ ExitHelper.exit(1)
164
+ end
165
+ end
166
+
131
167
  if @linkOnly
132
168
  if @rebuild
133
169
  Bake.formatter.printError("Error: --link_only and --rebuild not allowed at the same time")
@@ -39,7 +39,9 @@ module Bake
39
39
  puts " --set <key>=<value> Sets a variable. Overwrites variables defined in Project.metas (can be used multiple times)."
40
40
  puts " --show_include_paths Used by IDEs plugins"
41
41
  puts " --show_incs_and_defs Used by IDEs plugins"
42
+ puts " --conversion_info Prints infos for an external tool which converts bake configs for other build systems"
42
43
  puts " --writeCC2J <name> Writes compiler command into a json file (experimental!)"
44
+ puts " --create exe|lib|custom Creates a project with exe, lib or custom template"
43
45
  puts ""
44
46
  puts " --version Print version."
45
47
  puts " --doc Open documentation in browser"
@@ -0,0 +1,35 @@
1
+ require 'blocks/compile'
2
+
3
+ module Bake
4
+
5
+ module Blocks
6
+
7
+ class Convert < Compile
8
+
9
+ def initialize(block, config, referencedConfigs, tcs)
10
+ super(block, config, referencedConfigs, tcs)
11
+ end
12
+
13
+ def execute
14
+ Dir.chdir(@projectDir) do
15
+ calcSources
16
+
17
+ puts "START_INFO"
18
+ puts " BAKE_SOURCES"
19
+ @source_files.each { |s| puts " #{s}" }
20
+ puts " BAKE_INCLUDES"
21
+ @include_list.each { |s| puts " #{s}" }
22
+ puts " BAKE_DEFINES"
23
+ (@tcs[:COMPILER][:CPP][:DEFINES] + @tcs[:COMPILER][:C][:DEFINES] + @tcs[:COMPILER][:ASM][:DEFINES]).uniq.each { |s| puts " #{s}" }
24
+ puts "END_INFO"
25
+ end
26
+ end
27
+
28
+ def clean
29
+ # nothing to do here
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
@@ -134,6 +134,8 @@ module Bake
134
134
 
135
135
  return if cmdLineCheck and BlockBase.isCmdLineEqual?(cmd, cmdLineFile)
136
136
 
137
+ ToCxx.linkBlock
138
+
137
139
  BlockBase.prepareOutput(@exe_name)
138
140
 
139
141
  printCmd(cmdLinePrint, "Linking #{@exe_name}", reason, false)
@@ -1,7 +1,7 @@
1
1
  module Bake
2
2
  class Version
3
3
  def self.number
4
- "2.8.0"
4
+ "2.9.0"
5
5
  end
6
6
  end
7
7
 
@@ -21,9 +21,11 @@ require 'blocks/block'
21
21
  require 'blocks/commandLine'
22
22
  require 'blocks/makefile'
23
23
  require 'blocks/compile'
24
+ require 'blocks/convert'
24
25
  require 'blocks/library'
25
26
  require 'blocks/executable'
26
27
  require 'blocks/lint'
28
+ require 'blocks/convert'
27
29
  require 'blocks/docu'
28
30
 
29
31
  require 'set'
@@ -38,7 +40,13 @@ module Bake
38
40
  end
39
41
 
40
42
  class ToCxx
43
+
44
+ @@linkBlock = 0
41
45
 
46
+ def self.linkBlock
47
+ @@linkBlock = 1
48
+ end
49
+
42
50
  def initialize
43
51
  @configTcMap = {}
44
52
  end
@@ -105,7 +113,7 @@ module Bake
105
113
  addSteps(block, block.startupSteps, config.startupSteps)
106
114
  addSteps(block, block.exitSteps, config.exitSteps)
107
115
 
108
- if not Bake.options.linkOnly and not Bake.options.prepro and not Bake.options.lint and not Bake.options.docu and not Bake.options.filename and not Bake.options.analyze
116
+ if not Bake.options.linkOnly and not Bake.options.prepro and not Bake.options.lint and not Bake.options.conversion_info and not Bake.options.docu and not Bake.options.filename and not Bake.options.analyze
109
117
  addSteps(block, block.preSteps, config.preSteps)
110
118
  addSteps(block, block.postSteps, config.postSteps)
111
119
  end
@@ -113,9 +121,11 @@ module Bake
113
121
  if Bake.options.docu
114
122
  block.mainSteps << Blocks::Docu.new(config, @configTcMap[config])
115
123
  elsif Metamodel::CustomConfig === config
116
- if not Bake.options.linkOnly and not Bake.options.prepro and not Bake.options.lint and not Bake.options.docu and not Bake.options.filename and not Bake.options.analyze
124
+ if not Bake.options.linkOnly and not Bake.options.prepro and not Bake.options.lint and not Bake.options.conversion_info and not Bake.options.docu and not Bake.options.filename and not Bake.options.analyze
117
125
  addSteps(block, block.mainSteps, config) if config.step
118
126
  end
127
+ elsif Bake.options.conversion_info
128
+ block.mainSteps << Blocks::Convert.new(block, config, @loadedConfig.referencedConfigs, @configTcMap[config])
119
129
  elsif Bake.options.lint
120
130
  block.mainSteps << Blocks::Lint.new(block, config, @loadedConfig.referencedConfigs, @configTcMap[config])
121
131
  else
@@ -206,6 +216,8 @@ module Bake
206
216
  taskType = "Building"
207
217
  if Bake.options.lint
208
218
  taskType = "Linting"
219
+ elsif Bake.options.conversion_info
220
+ taskType = "Showing conversion infos"
209
221
  elsif Bake.options.docu
210
222
  taskType = "Generating documentation"
211
223
  elsif Bake.options.prepro
@@ -269,6 +281,9 @@ module Bake
269
281
  createBaseTcsForConfig
270
282
  substVars
271
283
  createTcsForConfig
284
+
285
+ @@linkBlock = 0
286
+
272
287
  convert2bb
273
288
 
274
289
  Blocks::Show.includes if Bake.options.show_includes
@@ -324,7 +339,11 @@ module Bake
324
339
  ExitHelper.set_exit_code(1)
325
340
  return
326
341
  else
327
- Bake.formatter.printSuccess("\n#{taskType} done.")
342
+ if Bake.options.linkOnly and @@linkBlock == 0
343
+ Bake.formatter.printSuccess("\nNothing to link.")
344
+ else
345
+ Bake.formatter.printSuccess("\n#{taskType} done.")
346
+ end
328
347
  end
329
348
  rescue SystemExit
330
349
  Bake.formatter.printError("\n#{taskType} failed.") if ExitHelper.exit_code != 0
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.8.0
4
+ version: 2.9.0
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-05-19 00:00:00.000000000 Z
11
+ date: 2015-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rtext
@@ -83,6 +83,7 @@ files:
83
83
  - lib/bake/model/loader.rb
84
84
  - lib/bake/model/metamodel.rb
85
85
  - lib/bake/model/metamodel_ext.rb
86
+ - lib/bake/options/create.rb
86
87
  - lib/bake/options/options.rb
87
88
  - lib/bake/options/showConfigNames.rb
88
89
  - lib/bake/options/showDoc.rb
@@ -128,6 +129,7 @@ files:
128
129
  - lib/blocks/blockBase.rb
129
130
  - lib/blocks/commandLine.rb
130
131
  - lib/blocks/compile.rb
132
+ - lib/blocks/convert.rb
131
133
  - lib/blocks/docu.rb
132
134
  - lib/blocks/executable.rb
133
135
  - lib/blocks/has_execute_command.rb