class IAR::Project
Constants
- TOOLCHAIN
Public Class Methods
new(project_data, generator_variable, logger = nil)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 23 def initialize(project_data, generator_variable, logger = nil) @logger = logger unless (logger) @logger = Logger.new(STDOUT) @logger.level = Logger::WARN end 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| @logger.info template ext = File.extname(template) if @iar_project_files.keys.include?(ext) path = @paths.fullpath("default_path",template) #begin 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 #rescue # @logger.info "failed to open #{template}" #end end end end
Public Instance Methods
document()
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 84 def document() project_name = get_project_name() end
generator(filter, project_data)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 59 def generator(filter, project_data) return if not is_toolchain_support(Project::TOOLCHAIN) create_method( Project::TOOLCHAIN) send(Project::TOOLCHAIN.to_sym, project_data) save_project() end
save_project()
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 138 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()
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 66 def source() #add sources to target 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)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 161 def target_as_defines(target_node, doc) defines_array = Array.new doc.each do |item| if item.class == Hash item.each do |key, value| defines_array.insert(-1, "#{key}=#{value}") end else defines_array.insert(-1, item) end end settings = {'ADefines' => { 'state' => defines_array } } add_specific(target_node, settings) end
target_as_flags(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 196 def target_as_flags(target_node, doc) flags_array = Array.new doc.each do |item| if item.class == Hash item.each do |key, value| flags_array.insert(-1, "#{key}=#{value}") end else flags_array.insert(-1, item) end end settings = {'AExtraOptionsV2' => { 'state' => flags_array } } add_specific(target_node, settings) end
target_as_include(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 179 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)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 157 def target_as_predefines(target_node, doc) end
target_cc_defines(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 235 def target_cc_defines(target_node, doc) defines_array = Array.new doc.each do |item, item_value| if item_value.nil? defines_array.insert(-1, "#{item}") else defines_array.insert(-1, "#{item}=#{item_value}") end end settings = {'CCDefines' => { 'state' => defines_array } } add_specific(target_node, settings) end
target_cc_flags(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 268 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)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 251 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)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 214 def target_cc_predefines(target_node, doc) end
target_cc_preincludes(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 218 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)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 143 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)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 289 def target_cxx_defines(target_node, doc) target_cc_defines(target_node, doc) end
target_cxx_flags(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 297 def target_cxx_flags(target_node, doc) target_cc_flags(target_node, doc) end
target_cxx_include(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 293 def target_cxx_include(target_node, doc) target_cc_include(target_node, doc) end
target_cxx_predefines(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 281 def target_cxx_predefines(target_node, doc) target_cc_predefines(target_node, doc) end
target_cxx_preincludes(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 285 def target_cxx_preincludes(target_node, doc) target_cc_preincludes(target_node, doc) end
target_ld_flags(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 301 def target_ld_flags(target_node, doc) settings = {'IlinkConfigDefines' => { 'state' => doc } } add_specific(target_node, settings) end
target_libraries(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 309 def target_libraries(target_node, doc) settings = {'IlinkAdditionalLibs' => { 'state' => doc } } add_specific(target_node, settings) end
target_linker_file(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 317 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)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 337 def target_outdir(target_node, doc) =begin <option> <name>IlinkOutputFile</name> <state>K70_pit_drivers_test.out</state> </option> =end settings = { 'IlinkOutputFile' => { 'state' => "#{get_project_name()}.out" } } set_specific(target_node, settings) end
target_tool_chain_add_spec(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 134 def target_tool_chain_add_spec(target_node, doc) add_specific(target_node, doc) end
target_tool_chain_set_spec(target_node, doc)
click to toggle source
tool_chain_specific attribute for each target Params:
-
target_node: the xml node of given target
-
doc: the hash that holds the data
# File lib/ebngen/adapter/iar.rb, line 130 def target_tool_chain_set_spec(target_node, doc) set_specific(target_node, doc) end
targets()
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 89 def targets() convert_lut = { 'cx_flags' => 'cxx_flags', 'cc_define' => 'cc_defines', 'cx_define' => 'cxx_defines', 'as_define' => 'as_defines', 'cp_define' => 'cp_defines', 'ar_flags' => 'ar_flags' } get_targets(Project::TOOLCHAIN).each do |key, value| next if value.nil? #add target for ewp t = new_target(key, @iar_project_files['.ewp']) if t.nil? @logger.info "missing default debug configuration in template" return end #do the target settings value.each_key do |subkey| #for backward compatible temp_op = subkey.gsub('-', '_') if convert_lut.has_key? temp_op target_op = convert_lut[temp_op] else target_op = temp_op end methods = self.class.instance_methods(false) if methods.include?("target_#{target_op}".to_sym) send("target_#{target_op}".to_sym, t, value[subkey]) else @logger.info "#{subkey} is not processed try to use the tool-chain specific" end end end remove_targets(@iar_project_files['.ewp'], get_target_list(Project::TOOLCHAIN)) end
templates()
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 76 def templates() #load tempaltes end
type()
click to toggle source
# File lib/ebngen/adapter/iar.rb, line 80 def type() #set project type end