Class: IAR::Project
Constant Summary
collapse
- TOOLCHAIN =
'iar'
Instance Method Summary
collapse
-
#generator(filter, project_data) ⇒ Object
-
#initialize(project_data, generator_variable) ⇒ Project
constructor
A new instance of Project.
-
#outdir ⇒ Object
-
#save_project ⇒ Object
-
#source ⇒ Object
-
#target_as_defines(target_node, doc) ⇒ Object
-
#target_as_flags(target_node, doc) ⇒ Object
-
#target_as_include(target_node, doc) ⇒ Object
-
#target_as_predefines(target_node, doc) ⇒ Object
-
#target_cc_defines(target_node, doc) ⇒ Object
-
#target_cc_flags(target_node, doc) ⇒ Object
-
#target_cc_include(target_node, doc) ⇒ Object
-
#target_cc_predefines(target_node, doc) ⇒ Object
-
#target_cc_preincludes(target_node, doc) ⇒ Object
-
#target_cp_defines(target_node, doc) ⇒ Object
-
#target_cxx_defines(target_node, doc) ⇒ Object
-
#target_cxx_flags(target_node, doc) ⇒ Object
-
#target_cxx_include(target_node, doc) ⇒ Object
-
#target_cxx_predefines(target_node, doc) ⇒ Object
-
#target_cxx_preincludes(target_node, doc) ⇒ Object
-
#target_ld_flags(target_node, doc) ⇒ Object
-
#target_libraries(target_node, doc) ⇒ Object
-
#target_linker_file(target_node, doc) ⇒ Object
-
#target_outdir(target_node, doc) ⇒ Object
-
#target_tool_chain_add_spec(target_node, doc) ⇒ Object
-
#target_tool_chain_set_spec(target_node, doc) ⇒ Object
tool_chain_specific attribute for each target Params: - target_node: the xml node of given target - doc: the hash that holds the data.
-
#targets ⇒ Object
-
#templates ⇒ Object
-
#type ⇒ Object
#get_board, #get_libraries, #get_output_dir, #get_project_name, #get_src_list, #get_target_list, #get_targets, #get_template, #get_type, #set_hash
Methods included from EWP
#add_sources, #add_specific, #create_node, #load_node, #new_target, #remove_sources, #remove_targets, #remove_unused, #save, #set_specific
Methods included from Base
#create_method, #process
Constructor Details
#initialize(project_data, generator_variable) ⇒ Project
Returns a new instance of Project.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/ebngen/adapter/iar.rb', line 23
def initialize(project_data, generator_variable)
set_hash(project_data)
@project_name = get_project_name()
@board = get_board()
@paths = PathModifier.new(generator_variable["paths"])
@iar_project_files = {".ewp" => nil, ".dni" => nil, ".ewd" => nil, ".yml" => nil}
return nil if get_template(Project::TOOLCHAIN).nil?
get_template(Project::TOOLCHAIN).each do |template|
puts template
ext = File.extname(template)
if @iar_project_files.keys.include?(ext)
path = @paths.fullpath("default_path",template)
case ext
when ".ewp"
doc = Nokogiri::XML(open(path))
@iar_project_files[ext] = doc
when ".ewd"
doc = Nokogiri::XML(open(path))
@iar_project_files[ext] = doc
when ".dni"
doc = Nokogiri::XML(open(path))
@iar_project_files[ext] = doc
end
end
end
end
|
Instance Method Details
#generator(filter, project_data) ⇒ Object
54
55
56
57
58
|
# File 'lib/ebngen/adapter/iar.rb', line 54
def generator(filter, project_data)
create_method( Project::TOOLCHAIN)
send(Project::TOOLCHAIN.to_sym, project_data)
save_project()
end
|
#outdir ⇒ Object
78
79
80
|
# File 'lib/ebngen/adapter/iar.rb', line 78
def outdir()
end
|
#save_project ⇒ Object
116
117
118
119
|
# File 'lib/ebngen/adapter/iar.rb', line 116
def save_project()
path = get_output_dir(Project::TOOLCHAIN, @paths.rootdir_table)
save(@iar_project_files['.ewp'], File.join(@paths.rootdir_table['output_root'], path, "#{@project_name}_#{@board}.ewp"))
end
|
#source ⇒ Object
60
61
62
63
64
65
66
67
68
|
# File 'lib/ebngen/adapter/iar.rb', line 60
def source()
return if @iar_project_files['.ewp'].nil?
remove_sources(@iar_project_files['.ewp'])
sources = get_src_list(Project::TOOLCHAIN)
o_path = get_output_dir(Project::TOOLCHAIN, @paths.rootdir_table)
proj_path = File.join(@paths.rootdir_table['output_root'], o_path)
add_sources(@iar_project_files['.ewp'], sources, @paths, proj_path)
end
|
#target_as_defines(target_node, doc) ⇒ Object
139
140
141
142
143
144
145
|
# File 'lib/ebngen/adapter/iar.rb', line 139
def target_as_defines(target_node, doc)
settings = {'ADefines' => {
'state' => doc
}
}
add_specific(target_node, settings)
end
|
#target_as_flags(target_node, doc) ⇒ Object
164
165
166
167
168
169
170
|
# File 'lib/ebngen/adapter/iar.rb', line 164
def target_as_flags(target_node, doc)
settings = {'AExtraOptionsV2' => {
'state' => doc
}
}
add_specific(target_node, settings)
end
|
#target_as_include(target_node, doc) ⇒ Object
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
# File 'lib/ebngen/adapter/iar.rb', line 147
def target_as_include(target_node, doc)
o_path = get_output_dir(Project::TOOLCHAIN, @paths.rootdir_table)
proj_path = File.join(@paths.rootdir_table['output_root'], o_path)
settings = {'AUserIncludes' => {} }
inc_array = Array.new
doc.each do |item|
if item['rootdir']
full_path = @paths.fullpath(item['rootdir'],item['path'])
else
full_path = @paths.fullpath('default_path',item['path'])
end
inc_array.insert(-1, File.join("$PROJ_DIR$", @paths.relpath(proj_path, full_path)))
end
settings['AUserIncludes']['state'] = inc_array
add_specific(target_node, settings)
end
|
#target_as_predefines(target_node, doc) ⇒ Object
135
136
137
|
# File 'lib/ebngen/adapter/iar.rb', line 135
def target_as_predefines(target_node, doc)
end
|
#target_cc_defines(target_node, doc) ⇒ Object
193
194
195
196
197
198
199
|
# File 'lib/ebngen/adapter/iar.rb', line 193
def target_cc_defines(target_node, doc)
settings = {'CCDefines' => {
'state' => doc
}
}
add_specific(target_node, settings)
end
|
#target_cc_flags(target_node, doc) ⇒ Object
218
219
220
221
222
223
224
225
226
227
228
229
|
# File 'lib/ebngen/adapter/iar.rb', line 218
def target_cc_flags(target_node, doc)
settings_check = { 'IExtraOptionsCheck' => {
'state' => 1
}
}
add_specific(target_node, settings_check)
settings = {'IExtraOptions' => {
'state' => doc
}
}
add_specific(target_node, settings)
end
|
#target_cc_include(target_node, doc) ⇒ Object
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
|
# File 'lib/ebngen/adapter/iar.rb', line 201
def target_cc_include(target_node, doc)
o_path = get_output_dir(Project::TOOLCHAIN, @paths.rootdir_table)
proj_path = File.join(@paths.rootdir_table['output_root'], o_path)
settings = {'CCIncludePath2' => {} }
inc_array = Array.new
doc.each do |item|
if item['rootdir']
full_path = @paths.fullpath(item['rootdir'],item['path'])
else
full_path = @paths.fullpath('default_path',item['path'])
end
inc_array.insert(-1, File.join("$PROJ_DIR$", @paths.relpath(proj_path, full_path)))
end
settings['CCIncludePath2']['state'] = inc_array
add_specific(target_node, settings)
end
|
#target_cc_predefines(target_node, doc) ⇒ Object
172
173
174
|
# File 'lib/ebngen/adapter/iar.rb', line 172
def target_cc_predefines(target_node, doc)
end
|
#target_cc_preincludes(target_node, doc) ⇒ Object
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
# File 'lib/ebngen/adapter/iar.rb', line 176
def target_cc_preincludes(target_node, doc)
o_path = get_output_dir(Project::TOOLCHAIN, @paths.rootdir_table)
proj_path = File.join(@paths.rootdir_table['output_root'], o_path)
settings = {'PreInclude' => {} }
inc_array = Array.new
doc.each do |item|
if item['rootdir']
full_path = @paths.fullpath(item['rootdir'],item['path'])
else
full_path = @paths.fullpath('default_path',item['path'])
end
inc_array.insert(-1, File.join("$PROJ_DIR$", @paths.relpath(proj_path, full_path)))
end
settings['PreInclude']['state'] = inc_array
add_specific(target_node, settings)
end
|
#target_cp_defines(target_node, doc) ⇒ Object
121
122
123
124
125
126
127
128
129
130
131
132
133
|
# File 'lib/ebngen/adapter/iar.rb', line 121
def target_cp_defines(target_node, doc)
value = doc.values.join(" ")
settings = {'OGChipSelectEditMenu' => {
'state' => doc.keys.join("") + "\t" + value
}
}
set_specific(target_node, settings)
settings = {'GEndianModeBE' => {
'state' => 1
}
}
set_specific(target_node, settings)
end
|
#target_cxx_defines(target_node, doc) ⇒ Object
239
240
241
|
# File 'lib/ebngen/adapter/iar.rb', line 239
def target_cxx_defines(target_node, doc)
target_cc_defines(target_node, doc)
end
|
#target_cxx_flags(target_node, doc) ⇒ Object
247
248
249
|
# File 'lib/ebngen/adapter/iar.rb', line 247
def target_cxx_flags(target_node, doc)
target_cc_flags(target_node, doc)
end
|
#target_cxx_include(target_node, doc) ⇒ Object
243
244
245
|
# File 'lib/ebngen/adapter/iar.rb', line 243
def target_cxx_include(target_node, doc)
target_cc_include(target_node, doc)
end
|
#target_cxx_predefines(target_node, doc) ⇒ Object
231
232
233
|
# File 'lib/ebngen/adapter/iar.rb', line 231
def target_cxx_predefines(target_node, doc)
target_cc_predefines(target_node, doc)
end
|
#target_cxx_preincludes(target_node, doc) ⇒ Object
235
236
237
|
# File 'lib/ebngen/adapter/iar.rb', line 235
def target_cxx_preincludes(target_node, doc)
target_cc_preincludes(target_node, doc)
end
|
#target_ld_flags(target_node, doc) ⇒ Object
251
252
253
254
255
256
257
|
# File 'lib/ebngen/adapter/iar.rb', line 251
def target_ld_flags(target_node, doc)
settings = {'IlinkConfigDefines' => {
'state' => doc
}
}
add_specific(target_node, settings)
end
|
#target_libraries(target_node, doc) ⇒ Object
259
260
261
262
263
264
265
|
# File 'lib/ebngen/adapter/iar.rb', line 259
def target_libraries(target_node, doc)
settings = {'IlinkAdditionalLibs' => {
'state' => doc
}
}
add_specific(target_node, settings)
end
|
#target_linker_file(target_node, doc) ⇒ Object
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
# File 'lib/ebngen/adapter/iar.rb', line 267
def target_linker_file(target_node, doc)
settings_check = { 'IlinkIcfOverride' => {
'state' => 1
}
}
add_specific(target_node, settings_check)
o_path = get_output_dir(Project::TOOLCHAIN, @paths.rootdir_table)
proj_path = File.join(@paths.rootdir_table['output_root'], o_path)
settings = {'IlinkIcfFile' => {} }
inc_array = Array.new
if doc.has_key?("rootdir")
full_path = @paths.fullpath(doc['rootdir'],doc['path'])
else
full_path = @paths.fullpath('default_path',doc['path'])
end
inc_array.insert(-1, File.join("$PROJ_DIR$", @paths.relpath(proj_path, full_path)))
settings['IlinkIcfFile']['state'] = inc_array.join(" ")
add_specific(target_node, settings)
end
|
#target_outdir(target_node, doc) ⇒ Object
287
288
289
|
# File 'lib/ebngen/adapter/iar.rb', line 287
def target_outdir(target_node, doc)
end
|
112
113
114
|
# File 'lib/ebngen/adapter/iar.rb', line 112
def target_tool_chain_add_spec(target_node, doc)
add_specific(target_node, doc)
end
|
tool_chain_specific attribute for each target Params:
108
109
110
|
# File 'lib/ebngen/adapter/iar.rb', line 108
def target_tool_chain_set_spec(target_node, doc)
set_specific(target_node, doc)
end
|
#targets ⇒ Object
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/ebngen/adapter/iar.rb', line 82
def targets()
get_targets(Project::TOOLCHAIN).each do |key, value|
next if value.nil?
t = new_target(key, @iar_project_files['.ewp'])
if t.nil?
puts "missing default debug configuration in template"
return
end
value.each_key do |subkey|
methods = self.class.instance_methods(false)
if methods.include?("target_#{subkey}".to_sym)
send("target_#{subkey}".to_sym, t, value[subkey])
else
puts "#{subkey} is not processed"
end
end
end
remove_targets(@iar_project_files['.ewp'], get_target_list(Project::TOOLCHAIN))
end
|
#templates ⇒ Object
70
71
72
|
# File 'lib/ebngen/adapter/iar.rb', line 70
def templates()
end
|
#type ⇒ Object
74
75
76
|
# File 'lib/ebngen/adapter/iar.rb', line 74
def type()
end
|