class MDK::Project_set

Constants

TOOLCHAIN

Public Class Methods

new(project_data, generator_variable, logger = nil) click to toggle source

initialize EWW class PARAMS:

  • project_data: specific project data format for a application/library

  • generator_variable: all dependency in hash

# File lib/ebngen/adapter/mdk.rb, line 393
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"])
        @all_projects_hash = generator_variable["all"]
        @mdk_project_files = {"project_mpw" => nil,".xsd" => nil}
        return nil if get_template(Project_set::TOOLCHAIN).nil?
        get_template(Project_set::TOOLCHAIN).each do |template|
                ext = File.extname(template)
                if @mdk_project_files.keys.include?(ext)
                        path = @paths.fullpath("default_path",template)
                        case ext
                                when ".xsd"
                                        fn = File.basename(path, ".xsd")
                                        @logger.info "#{fn} processing"
                                        if fn == "project_mpw"
                                          #doc = Nokogiri::XML(open(path))
                                          string_xml = XsdPopulator.new(:xsd => path).populated_xml
                                          doc = Nokogiri::XML(string_xml)
                                          @mdk_project_files['project_mpw'] = doc
                                          init_project_set(doc, get_default_projectset_settings(Project_set::TOOLCHAIN))
                                        end
                                else
                                        @logger.info "#{ext} not processed"
                        end
                end
        end   
end

Public Instance Methods

add_project_to_set() click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 435
def add_project_to_set()
        return if @mdk_project_files.nil?
        return if @mdk_project_files['project_mpw'].nil?
        ext = "project_mpw"
        #add projects
        file = "#{@project_name}_#{@board}.uvprojx"
        add_project(@mdk_project_files[ext], file)
        #add library projects here
        #get from dependency['libraries'][library_name]
        ustruct = @all_projects_hash
        return if get_libraries(Project_set::TOOLCHAIN).nil?
        get_libraries(Project_set::TOOLCHAIN).each do |lib|
                if ustruct[lib].nil?
                        @logger.info "#{lib} information is missing in all hash"
                        next
                end
                libname = "#{@project_name}"
    root = @paths.rootdir_table[@ustruct[library][tool_key]['outdir']['root-dir']]
    lib_path = File.join(root, @ustruct[library][tool_key]['outdir']['path'], libname)
    if @ustruct[ project_name ][ tool_key ].has_key?('outdir')
        wspath = File.join(@output_rootdir, @ustruct[ project_name ][ tool_key ][ 'outdir' ] )
    else
        wspath = @output_rootdir
    end
    path = Pathname.new(lib_path).relative_path_from(Pathname.new(wspath))
                
                add_project(@mdk_project_files[ext], path)
        end

end
generator() click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 428
def generator()
        return if not is_toolchain_support(Project::TOOLCHAIN)
        add_project_to_set()
        save_set()
end
save_set() click to toggle source
# File lib/ebngen/adapter/mdk.rb, line 466
def save_set()
        path = get_output_dir(Project_set::TOOLCHAIN, @paths.rootdir_table)
        @logger.info  @paths.rootdir_table['output_root']
        @logger.info path
        @logger.info "#{@project_name}_#{@board}"
        if path.class == Hash 
                save(@mdk_project_files['project_mpw'], File.join(@paths.rootdir_table[path['rootdir']], path['path'], "#{@project_name}_#{@board}.uvmpw"))
        else
          save(@mdk_project_files['project_mpw'], File.join(@paths.rootdir_table['output_root'], path, "#{@project_name}_#{@board}.uvmpw"))
        end
end