ebngen 1.0.1 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d18964b0ad569c78be8e3864446b73fbcd50a217
4
- data.tar.gz: a6d43d8ccee3402fd0974b0d2e6ee56d1bd4c60c
3
+ metadata.gz: 289fba682eff193bbcdba2b0d625bb8bcf1d924d
4
+ data.tar.gz: a8f9b56f7039a6dceae9451ff50f5b381ee634a8
5
5
  SHA512:
6
- metadata.gz: 8eea8b1eb2b741fb6bdd2e65b169ad089a51d4f530416ed8391e2cf0ef6f341b6cb13b76cb47f2873b32394db62a2e05d836f56905976d699a5cf535b073f023
7
- data.tar.gz: e0a7433011a34fc999ed1b4bdf180dfb45762573c9753c2ad780e0afbc11cb60f3c10b5688e8da947355df6690d1ce874a742cd2170cde57c64b6b58aba3b877
6
+ metadata.gz: 2adc6498855aeed317dfef63d4c93471eca978624a217c1e8e5622beddccb6c5f885e5868af6103711acd3654e39a9a0b688007299730e8647645680617b3fdf
7
+ data.tar.gz: e1f54f7610740300010192657afc15be7be2045c1e7a3def44fb0e37e2f9a680f0bd74dcc03c6e25362fe31a43be70ef97ba053b8319bdc685e5d2e60ccc0b96
@@ -3,18 +3,16 @@ require "yaml"
3
3
 
4
4
 
5
5
  module UNI_Project
6
+ def is_toolchain_support(tool_chain)
7
+ return @projects_hash.has_key?(tool_chain)
8
+ end
6
9
 
7
10
  def set_hash(options)
8
11
  @projects_hash = options
9
12
  end
10
13
 
11
- def get_output_dir(toolchain, path_hash, **args)
12
- if args.length == 0
13
- return File.join(@projects_hash[toolchain]["outdir"], toolchain)
14
- elsif ! args[:dir].nil?
15
- return Pathname.new(File.join(
16
- @projects_hash[toolchain]["outdir"], toolchain)).relative_path_from(Pathname.new(args[:dir])).to_s
17
- end
14
+ def get_output_dir(toolchain, path_hash)
15
+ @projects_hash[toolchain]["outdir"]
18
16
  end
19
17
 
20
18
  def get_src_list(toolchain)
@@ -18,7 +18,12 @@ module CMAKE
18
18
  include TXT
19
19
  include UNI_Project
20
20
 
21
- def initialize(project_data, generator_variable)
21
+ def initialize(project_data, generator_variable, logger = nil)
22
+ @logger = logger
23
+ unless (logger)
24
+ @logger = Logger.new(STDOUT)
25
+ @logger.level = Logger::WARN
26
+ end
22
27
  set_hash(project_data)
23
28
  @project_name = get_project_name()
24
29
  @board = get_board()
@@ -29,6 +34,7 @@ module CMAKE
29
34
  end
30
35
 
31
36
  def generator(filter, project_data)
37
+ return if not is_toolchain_support(Project::TOOLCHAIN)
32
38
  create_method(Project::TOOLCHAIN)
33
39
  send(Project::TOOLCHAIN.to_sym, project_data)
34
40
  save_project()
@@ -41,13 +47,21 @@ module CMAKE
41
47
  proj_path = File.join(@paths.rootdir_table['output_root'], o_path)
42
48
  @project['sources'] = Array.new
43
49
  sources.each do |src|
44
- if src['rootdir']
45
- full_path = @paths.fullpath(src['rootdir'],src['path'])
46
- else
47
- full_path = @paths.fullpath('default_path',src['path'])
48
- end
49
- ipath = File.join("$ProjDirPath$", @paths.relpath(proj_path, full_path))
50
- @project['sources'].insert(-1, ipath)
50
+ if file['rootdir']
51
+ if file.has_key? 'path'
52
+ full_path = path_mod.fullpath(file['rootdir'],file['path'])
53
+ else
54
+ full_path = path_mod.fullpath(file['rootdir'],file['source'])
55
+ end
56
+ else
57
+ if file.has_key? 'path'
58
+ full_path = path_mod.fullpath('default_path',file['path'])
59
+ else
60
+ full_path = path_mod.fullpath('default_path',file['source'])
61
+ end
62
+ end
63
+ ipath = File.join("$ProjDirPath$", @paths.relpath(proj_path, full_path))
64
+ @project['sources'].insert(-1, ipath)
51
65
  end
52
66
 
53
67
  end
@@ -61,7 +75,7 @@ module CMAKE
61
75
  end
62
76
 
63
77
  def outdir()
64
- puts "#{get_output_dir(Project::TOOLCHAIN, @paths.rootdir_table)}"
78
+ @logger.info "#{get_output_dir(Project::TOOLCHAIN, @paths.rootdir_table)}"
65
79
  end
66
80
 
67
81
  def targets()
@@ -76,7 +90,7 @@ module CMAKE
76
90
  if methods.include?("target_#{subkey}".to_sym)
77
91
  send("target_#{subkey}".to_sym, key, value[subkey])
78
92
  else
79
- puts "#{key} is not processed"
93
+ @logger.info "#{key} is not processed"
80
94
  end
81
95
  end
82
96
  end
@@ -204,7 +204,11 @@ module EWP
204
204
  source_hash.each do |src|
205
205
  rootdir = src['rootdir']
206
206
  virtual_dir = src['virtual_dir']
207
- path = src['path']
207
+ if src.has_key?('path')
208
+ path = src['path']
209
+ else
210
+ path = src['source']
211
+ end
208
212
  if virtual_dir
209
213
  if ! groups_existing.include?(virtual_dir)
210
214
  groups_existing.insert(-1, virtual_dir)
@@ -20,7 +20,12 @@ class Project
20
20
  include EWD
21
21
  include UNI_Project
22
22
 
23
- def initialize(project_data, generator_variable)
23
+ def initialize(project_data, generator_variable, logger = nil)
24
+ @logger = logger
25
+ unless (logger)
26
+ @logger = Logger.new(STDOUT)
27
+ @logger.level = Logger::WARN
28
+ end
24
29
  set_hash(project_data)
25
30
  @project_name = get_project_name()
26
31
  @board = get_board()
@@ -28,7 +33,7 @@ class Project
28
33
  @iar_project_files = {".ewp" => nil, ".dni" => nil, ".ewd" => nil, ".yml" => nil}
29
34
  return nil if get_template(Project::TOOLCHAIN).nil?
30
35
  get_template(Project::TOOLCHAIN).each do |template|
31
- puts template
36
+ @logger.info template
32
37
  ext = File.extname(template)
33
38
  if @iar_project_files.keys.include?(ext)
34
39
  path = @paths.fullpath("default_path",template)
@@ -45,13 +50,14 @@ class Project
45
50
  @iar_project_files[ext] = doc
46
51
  end
47
52
  #rescue
48
- # puts "failed to open #{template}"
53
+ # @logger.info "failed to open #{template}"
49
54
  #end
50
55
  end
51
56
  end
52
57
  end
53
58
 
54
59
  def generator(filter, project_data)
60
+ return if not is_toolchain_support(Project::TOOLCHAIN)
55
61
  create_method( Project::TOOLCHAIN)
56
62
  send(Project::TOOLCHAIN.to_sym, project_data)
57
63
  save_project()
@@ -80,21 +86,36 @@ class Project
80
86
  end
81
87
 
82
88
  def targets()
89
+ convert_lut = {
90
+ 'cx_flags' => 'cxx_flags',
91
+ 'cc_define' => 'cc_defines',
92
+ 'cx_define' => 'cxx_defines',
93
+ 'as_define' => 'as_defines',
94
+ 'cp_define' => 'cp_defines',
95
+ 'ar_flags' => 'ar_flags'
96
+ }
83
97
  get_targets(Project::TOOLCHAIN).each do |key, value|
84
98
  next if value.nil?
85
99
  #add target for ewp
86
100
  t = new_target(key, @iar_project_files['.ewp'])
87
101
  if t.nil?
88
- puts "missing default debug configuration in template"
102
+ @logger.info "missing default debug configuration in template"
89
103
  return
90
104
  end
91
105
  #do the target settings
92
106
  value.each_key do |subkey|
107
+ #for backward compatible
108
+ temp_op = subkey.gsub('-', '_')
109
+ if convert_lut.has_key? temp_op
110
+ target_op = convert_lut[temp_op]
111
+ else
112
+ target_op = temp_op
113
+ end
93
114
  methods = self.class.instance_methods(false)
94
- if methods.include?("target_#{subkey}".to_sym)
95
- send("target_#{subkey}".to_sym, t, value[subkey])
115
+ if methods.include?("target_#{target_op}".to_sym)
116
+ send("target_#{target_op}".to_sym, t, value[subkey])
96
117
  else
97
- puts "#{subkey} is not processed"
118
+ @logger.info "#{subkey} is not processed try to use the tool-chain specific"
98
119
  end
99
120
  end
100
121
  end
@@ -299,7 +320,12 @@ class Project_set
299
320
  # PARAMS:
300
321
  # - project_data: specific project data format for a application/library
301
322
  # - generator_variable: all dependency in hash
302
- def initialize(project_data, generator_variable)
323
+ def initialize(project_data, generator_variable, logger = nil)
324
+ @logger = logger
325
+ unless (logger)
326
+ @logger = Logger.new(STDOUT)
327
+ @logger.level = Logger::WARN
328
+ end
303
329
  set_hash(project_data)
304
330
  @project_name = get_project_name()
305
331
  @board = get_board()
@@ -316,7 +342,7 @@ class Project_set
316
342
  when ".eww"
317
343
  @iar_project_files[ext] = doc
318
344
  else
319
- puts "#{ext} not processed"
345
+ @logger.info "#{ext} not processed"
320
346
  end
321
347
  end
322
348
  end
@@ -330,6 +356,7 @@ class Project_set
330
356
  end
331
357
 
332
358
  def generator()
359
+ return if not is_toolchain_support(Project::TOOLCHAIN)
333
360
  add_project_to_set()
334
361
  save_set()
335
362
  end
@@ -360,7 +387,7 @@ class Project_set
360
387
  return if get_libraries(Project_set::TOOLCHAIN).nil?
361
388
  get_libraries(Project_set::TOOLCHAIN).each do |lib|
362
389
  if ustruct[lib].nil?
363
- puts "#{lib} information is missing in all hash"
390
+ @logger.info "#{lib} information is missing in all hash"
364
391
  next
365
392
  end
366
393
  libname = "#{@project_name}.ewp"
@@ -379,10 +406,14 @@ class Project_set
379
406
 
380
407
  def save_set()
381
408
  path = get_output_dir(Project_set::TOOLCHAIN, @paths.rootdir_table)
382
- puts @paths.rootdir_table['output_root']
383
- puts path
384
- puts "#{@project_name}_#{@board}.eww"
385
- save(@iar_project_files['.eww'], File.join(@paths.rootdir_table['output_root'], path, "#{@project_name}_#{@board}.eww"))
409
+ @logger.info @paths.rootdir_table['output_root']
410
+ @logger.info path
411
+ @logger.info "#{@project_name}_#{@board}.eww"
412
+ if path.class == Hash
413
+ save(@iar_project_files['.eww'], File.join(@paths.rootdir_table[path['rootdir']], path['path'], "#{@project_name}_#{@board}.eww"))
414
+ else
415
+ save(@iar_project_files['.eww'], File.join(@paths.rootdir_table['output_root'], path, "#{@project_name}_#{@board}.eww"))
416
+ end
386
417
  end
387
418
 
388
419
  end
@@ -1,41 +1,47 @@
1
1
 
2
2
  require_relative 'adapter/iar'
3
3
  require_relative 'adapter/cmake'
4
+ require 'logger'
4
5
 
5
6
  class Generator
6
7
  attr_accessor :generator_variable
7
- def initialize(options)
8
+ def initialize(options, logger = nil)
9
+ @logger = logger
10
+ unless (logger)
11
+ @logger = Logger.new(STDOUT)
12
+ @logger.level = Logger::INFO
13
+ end
8
14
  @generator_variable = options
9
15
  if @generator_variable.class != Hash
10
16
  puts "failure options shall be a hash"
11
17
  return
12
18
  end
13
19
  if @generator_variable.has_key?('all') and @generator_variable.has_key?('paths')
14
- puts "input setting is ok"
20
+ @logger.info "input setting is ok"
15
21
  else
16
- puts "input settings is wrong"
22
+ @logger.info "input settings is wrong"
17
23
  end
18
24
  end
19
25
 
20
26
  def generate_projects(tool_chain, filter, project_data)
21
27
  case tool_chain.downcase
22
28
  when 'iar'
23
- IAR::Project.new(project_data, @generator_variable).generator(filter, project_data)
29
+ IAR::Project.new(project_data, @generator_variable, @logger).generator(filter, project_data)
24
30
  when 'mdk'
25
- puts "mdk"
31
+ @logger.info "mdk TBD"
26
32
  when 'cmake'
27
- CMAKE::Project.new(project_data, @generator_variable).generator(filter, project_data)
33
+ CMAKE::Project.new(project_data, @generator_variable, @logger).generator(filter, project_data)
28
34
  end
29
35
  end
30
36
 
31
37
  def generate_project_set(tool_chain, project_data)
32
38
  case tool_chain.downcase
33
39
  when 'iar'
34
- IAR::Project_set.new(project_data, @generator_variable).generator()
40
+ IAR::Project_set.new(project_data, @generator_variable, @logger).generator()
35
41
  when 'mdk'
36
- puts "mdk"
42
+ @logger.info "mdk TBD"
37
43
  when 'armgcc'
38
- puts "armgcc"
44
+ @logger.info "armgcc TBD"
39
45
  end
40
46
  end
41
47
 
@@ -2,6 +2,7 @@ require 'deep_merge'
2
2
  require 'rubygems'
3
3
  require 'pathname'
4
4
  require 'fileutils'
5
+ require 'logger'
5
6
 
6
7
  module Utils_set
7
8
  def nodes_exist?(node, subnodes)
@@ -18,7 +19,12 @@ class Translator
18
19
 
19
20
  include Utils_set
20
21
 
21
- def initialize(node, logger: nil)
22
+ def initialize(node, logger = nil)
23
+ @logger = logger
24
+ unless (logger)
25
+ @logger = Logger.new(STDOUT)
26
+ @logger.level = Logger::INFO
27
+ end
22
28
  @data_in = deep_copy(node)
23
29
  @data_in_component = deep_copy(node)
24
30
  @data_out = Hash.new
@@ -61,10 +67,10 @@ class Translator
61
67
  begin
62
68
  next if struct[subnode]['configuration']['section-type'] != "application"
63
69
  if struct[addon]['configuration']['section-type'] != "component"
64
- puts "WARNING #{addon} is required as component but has not a component attribute"
70
+ @logger.warn "WARNING #{addon} is required as component but has not a component attribute"
65
71
  end
66
72
  rescue
67
- puts "error with the merge_by_add with #{subnode} add #{addon}"
73
+ @logger.error "error with the merge_by_add with #{subnode} add #{addon}"
68
74
  end
69
75
  deep_add_merge(struct, subnode, addon)
70
76
  end
@@ -79,6 +85,25 @@ class Translator
79
85
  #puts @data_out.to_yaml
80
86
  end
81
87
 
88
+ def output_path(proj, comp)
89
+ if @data_in[proj].has_key?('outdir')
90
+ board = @data_in[proj]['configuration']['board']
91
+ if @data_out[proj][comp]['type'] == "library"
92
+ if comp == 'uv4'
93
+ @data_out[proj][comp]['outdir'] = File.join(@data_in[proj]['outdir'], proj, "mdk")
94
+ else
95
+ @data_out[proj][comp]['outdir'] = File.join(@data_in[proj]['outdir'], proj, comp)
96
+ end
97
+ else
98
+ if comp == "uv4"
99
+ @data_out[proj][comp]['outdir'] = File.join(board, @data_in[proj]['outdir'], "mdk")
100
+ else
101
+ @data_out[proj][comp]['outdir'] = File.join(board, @data_in[proj]['outdir'], comp)
102
+ end
103
+ end
104
+ end
105
+ end
106
+
82
107
  private
83
108
 
84
109
  def convert_rules(proj, comp = 'iar')
@@ -111,23 +136,7 @@ class Translator
111
136
  if compiler.has_key?("group")
112
137
  @data_out[proj][comp]['group'] = compiler['group']
113
138
  end
114
-
115
- if @data_in[proj].has_key?('outdir')
116
- board = @data_in[proj]['configuration']['board']
117
- if @data_out[proj][comp]['type'] == "library"
118
- if comp == 'uv4'
119
- @data_out[proj][comp]['outdir'] = File.join(@data_in[proj]['outdir'], proj, "mdk")
120
- else
121
- @data_out[proj][comp]['outdir'] = File.join(@data_in[proj]['outdir'], proj, comp)
122
- end
123
- else
124
- if comp == "uv4"
125
- @data_out[proj][comp]['outdir'] = File.join(@data_in[proj]['outdir'], "mdk", board)
126
- else
127
- @data_out[proj][comp]['outdir'] = File.join(@data_in[proj]['outdir'], comp, board)
128
- end
129
- end
130
- end
139
+ output_path(proj, comp)
131
140
  compiler['config'].each_key do |target|
132
141
  next if compiler['load-to'].nil?
133
142
  next if compiler['load-to'][target].nil?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ebngen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hake Huang