www.pudn.com > mantis-0.9.5.rar > build_support.py



import os
import string


def add_include_path (list, toadd):
    i = string.find (toadd, '-I')
    if i != -1:
        toadd = toadd[i + 2:]
    list.append (toadd)
    return

def add_link_lib (list, toadd):
    i = string.find (toadd, '-l')
    if i != -1:
        toadd = toadd[i + 2:]
    list.append (toadd)
    return

def add_lib_path (list, toadd):
    i = string.find (toadd, '-L')
    if i != -1:
        toadd = toadd[i + 2:]
    list.append (toadd)
    return

#def run_pkg_config (list, command):
#    str_list = os.popen (command).read ().split ()
#    if len (str_list) == 0:
#        print "Command: '" + command + "' failed, exiting"
#        sys.exit (-1)
#    for substr in str_list:
#        list.append (substr.strip ('-I'))
#    return

def strip_path_from_files (file_list):
    for i, file in enumerate (file_list):
        j = string.rfind (file, '/')
        file_list[i] = file[j + 1:]
    return file_list

#def strip_lib_leading_l (lib_list):
#    for i, lib in enumerate (lib_list):
#        j = string.find (lib, 'l')
#        lib_list[i] = lib[j + 1:]
#    return lib_list


def obj_copy_function(target, source, env):

    target_file_path = str(target[0])
    j = string.rfind (target_file_path, '/')
    target_file = target_file_path[j + 1:]

    source_file_path = str(source[0])
    j = string.rfind (target_file_path, '/')
    target_file = target_file_path[j + 1:]
    
    temp = env.Execute(env.Action(env['OBJCOPY'] + ' --output-target=srec '
                      + source_file_path + ' '
                      + target_file))
    temp2 = env.Execute(env.Action('mv ' + target_file + ' ' + target_file_path))
    env.Default(temp)
    env.Default(temp2)




def build_app_function(env, app_names_list, app_sources_list, loadstat):
    # SCons compilation

    appfiles = []
    index = 0;
    file_to_load = None
    for i in app_sources_list:
        appname = string.replace(app_names_list[index], '.elf', '')
        
        appfile = env.Program (app_names_list[index], i)
        if env['plat'] != 'linux':
            #add avr-object copy command to compile srec
            env.Default(env.ObjCopy( appname + '.srec', app_names_list[index]))
            
            if loadstat != '0':
                if appname == loadstat:
                    file_to_load = appname
                
        else:
            env.Default(appfile)  
        index = index + 1;

    if file_to_load != None:
        temp = env.Command('load the image', [], 'mos_shell ' + env['envparams'] + env['loadparams'] + ' -p ' + env['appdir'] + env['builddir'] + file_to_load + '.srec')
        env.Depends(temp, file_to_load + '.srec')
        env.Default(temp)
    else:
        if loadstat != '0':
            env.Exit('Error: Invalid application to load')

    	temp_app_name = string.replace(app_names_list[0], '.elf', '')
    	load = env.Command('load the image', [], 'mos_shell ' + env['envparams'] + env['loadparams'] + ' -p ' + env['appdir'] + env['builddir'] +  temp_app_name + '.srec')
    	env.Depends(load, temp_app_name + '.srec')
    	env.Alias('load', load)
          
    #env.Clean(appfiles, '#build-scons/' + env['plat'] + '/' + env['appdir'])