Class: MDK::Project_set

Inherits:
Object
  • Object
show all
Includes:
UNI_Project, UVMWP
Defined in:
lib/ebngen/adapter/mdk.rb

Constant Summary collapse

TOOLCHAIN =
'mdk'

Instance Method Summary collapse

Methods included from UNI_Project

#get_board, #get_default_project_settings, #get_default_projectset_settings, #get_libraries, #get_output_dir, #get_project_name, #get_src_list, #get_target_list, #get_targets, #get_template, #get_type, #is_toolchain_support, #set_hash

Methods included from UVMWP

#add_node, #add_project, #init_project_set, #save, #travesernode

Constructor Details

#initialize(project_data, generator_variable, logger = nil) ⇒ Project_set

PARAMS:

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

  • generator_variable: all dependency in hash



393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
# 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

Instance Method Details

#add_project_to_setObject



435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
# 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

#generatorObject



428
429
430
431
432
# 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_setObject



466
467
468
469
470
471
472
473
474
475
476
# 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