class MDK::Project
Constants
- TOOLCHAIN
Public Class Methods
new(project_data, generator_variable, logger = nil)
click to toggle source
# File lib/ebngen/adapter/mdk.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"]) @mdk_project_files = {"project_projx"=> nil,".yml" => nil, ".uvprojx" => nil} return nil if get_template(Project::TOOLCHAIN).nil? get_template(Project::TOOLCHAIN).each do |template| @logger.info template ext = File.extname(template) if @mdk_project_files.keys.include?(ext) path = @paths.fullpath("default_path",template) #begin case ext when ".uvprojx" #fn = File.basename(path, ".uvprojx") #if fn == "project_projx" doc = Nokogiri::XML(open(path)) #string_xml = XsdPopulator.new(:xsd => path).populated_xml #doc = Nokogiri::XML(string_xml) @mdk_project_files["project_projx"] = doc #init_project(doc, get_default_project_settings(Project_set::TOOLCHAIN)) #end end #rescue # @logger.info "failed to open #{template}" #end end end end
Public Instance Methods
document()
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 86 def document() project_name = get_project_name() end
generator(filter, project_data)
click to toggle source
# File lib/ebngen/adapter/mdk.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/mdk.rb, line 145 def save_project() path = get_output_dir(Project::TOOLCHAIN, @paths.rootdir_table) @logger.info "save as #{File.join(@paths.rootdir_table['output_root'], path, "#{@project_name}_#{@board}.uvprojx")}" save(@mdk_project_files['project_projx'], File.join(@paths.rootdir_table['output_root'], path, "#{@project_name}_#{@board}.uvprojx")) end
source()
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 66 def source() #add sources to target =begin return if @mdk_project_files['project_projx'].nil? remove_sources(@mdk_project_files['project_projx']) 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(@mdk_project_files['project_projx'], sources, @paths, proj_path) =end end
target_as_defines(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 171 def target_as_defines(target_node, doc) asdefines = [] doc.each do |key, value| asdefines.insert(-1, "#{key}=#{value}") end settings = {'Aads' => { 'VariousControls' => { 'Define' => asdefines } } } set_specific(target_node, settings) end
target_as_flags(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 209 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 = {'Aads' => { 'VariousControls' => { 'MiscControls' => flags_array } } } add_specific(target_node, settings) end
target_as_include(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 186 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) 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 = {'Aads' => { 'VariousControls' => { 'IncludePath' => inc_array } } } add_specific(target_node, settings) end
target_as_predefines(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 167 def target_as_predefines(target_node, doc) end
target_cc_defines(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 237 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 = {'Cads' => { 'VariousControls' => { 'Define' => defines_array } } } add_specific(target_node, settings) end
target_cc_flags(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 278 def target_cc_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 = {'Cads' => { 'VariousControls' => { 'MiscControls' => flags_array } } } add_specific(target_node, settings) end
target_cc_include(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 256 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) 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 = {'Cads' => { 'VariousControls' => { 'IncludePath' => inc_array } } } add_specific(target_node, settings) end
target_cc_predefines(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 230 def target_cc_predefines(target_node, doc) end
target_cc_preincludes(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 234 def target_cc_preincludes(target_node, doc) end
target_cp_defines(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 151 def target_cp_defines(target_node, doc) cpdefines = [] doc.each do |key, value| cpdefines.insert(-1, "#{key}=#{value}") end settings = {'Cads' => { 'VariousControls' => { 'Define' => cpdefines } } } set_specific(target_node, settings) end
target_cxx_defines(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 307 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/mdk.rb, line 315 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/mdk.rb, line 311 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/mdk.rb, line 299 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/mdk.rb, line 303 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/mdk.rb, line 319 def target_ld_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 = {'LDads' => { 'Misc' => flags_array } } add_specific(target_node, settings) end
target_libraries(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 336 def target_libraries(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 = {'LDads' => { 'Misc' => flags_array } } add_specific(target_node, settings) end
target_linker_file(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 353 def target_linker_file(target_node, doc) o_path = get_output_dir(Project::TOOLCHAIN, @paths.rootdir_table) proj_path = File.join(@paths.rootdir_table['output_root'], o_path) 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 = {'LDads' => { 'ScatterFile' => inc_array.join(" ") } } add_specific(target_node, settings) end
target_outdir(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 369 def target_outdir(target_node, doc) =begin <option> <name>IlinkOutputFile</name> <state>K70_pit_drivers_test.out</state> </option> =end settings = { 'OutputDirectory' => "#{get_output_dir(Project::TOOLCHAIN, @paths.rootdir_table)}"} set_specific(target_node, settings) settings = { 'OutputName' => "#{get_project_name()}"} set_specific(target_node, settings) end
target_tool_chain_add_spec(target_node, doc)
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 141 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/mdk.rb, line 137 def target_tool_chain_set_spec(target_node, doc) set_specific(target_node, doc) end
targets()
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 90 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 uvproj t = new_target(key, @mdk_project_files['project_projx']) 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 #for mdk sources are added pre-target remove_sources(t) 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(t.at_xpath("Groups"), sources, @paths, proj_path) end remove_targets(@mdk_project_files['project_projx'], get_target_list(Project::TOOLCHAIN)) end
templates()
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 78 def templates() #load tempaltes end
type()
click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 82 def type() #set project type end