def DefineGroup(name, src, depend, **parameters): global Env if not GetDepend(depend): return [] # find exist group and get path of group group_path = '' for g in Projects: if g['name'] == name: group_path = g['path'] if group_path == '': group_path = GetCurrentDir() group = parameters group['name'] = name group['path'] = group_path if type(src) == type([]): # remove duplicate elements from list src = list(set(src)) group['src'] = File(src) else: group['src'] = src if 'CFLAGS' in group: target = group['CFLAGS'] if len(target) > 0: Env.AppendUnique(CFLAGS=target) if 'CCFLAGS' in group: target = group['CCFLAGS'] if len(target) > 0: Env.AppendUnique(CCFLAGS=target) if 'CXXFLAGS' in group: target = group['CXXFLAGS'] if len(target) > 0: Env.AppendUnique(CXXFLAGS=target) if 'CPPPATH' in group: target = group['CPPPATH'] if _PretreatListParameters(target) == True: paths = [] for item in target: paths.append(os.path.abspath(item)) target = paths Env.AppendUnique(CPPPATH=target) if 'CPPDEFINES' in group: target = group['CPPDEFINES'] if _PretreatListParameters(target) == True: Env.AppendUnique(CPPDEFINES=target) if 'LINKFLAGS' in group: target = group['LINKFLAGS'] if len(target) > 0: Env.AppendUnique(LINKFLAGS=target) if 'ASFLAGS' in group: target = group['ASFLAGS'] if len(target) > 0: Env.AppendUnique(ASFLAGS=target) if 'LOCAL_CPPPATH' in group: paths = [] for item in group['LOCAL_CPPPATH']: paths.append(os.path.abspath(item)) group['LOCAL_CPPPATH'] = paths if rtconfig.PLATFORM == 'gcc': if 'CFLAGS' in group: group['CFLAGS'] = utils.GCCC99Patch(group['CFLAGS']) if 'CCFLAGS' in group: group['CCFLAGS'] = utils.GCCC99Patch(group['CCFLAGS']) if 'CXXFLAGS' in group: group['CXXFLAGS'] = utils.GCCC99Patch(group['CXXFLAGS']) if 'LOCAL_CCFLAGS' in group: group['LOCAL_CCFLAGS'] = utils.GCCC99Patch(group['LOCAL_CCFLAGS']) if 'LOCAL_CXXFLAGS' in group: group['LOCAL_CXXFLAGS'] = utils.GCCC99Patch( group['LOCAL_CXXFLAGS']) if 'LOCAL_CFLAGS' in group: group['LOCAL_CFLAGS'] = utils.GCCC99Patch(group['LOCAL_CFLAGS']) # check whether to clean up library if GetOption('cleanlib') and os.path.exists( os.path.join(group['path'], GroupLibFullName(name, Env))): if group['src'] != []: print('Remove library:' + GroupLibFullName(name, Env)) fn = os.path.join(group['path'], GroupLibFullName(name, Env)) if os.path.exists(fn): os.unlink(fn) if 'LIBS' in group: target = group['LIBS'] if _PretreatListParameters(target) == True: Env.AppendUnique(LIBS=target) if 'LIBPATH' in group: target = group['LIBPATH'] if _PretreatListParameters(target) == True: Env.AppendUnique(LIBPATH=target) # check whether to build group library if 'LIBRARY' in group: objs = Env.Library(name, group['src']) else: # only add source objs = group['src'] # merge group for g in Projects: if g['name'] == name: # merge to this group MergeGroup(g, group) return objs def PriorityInsertGroup(groups, group): length = len(groups) for i in range(0, length): if operator.gt(groups[i]['name'].lower(), group['name'].lower()): groups.insert(i, group) return groups.append(group) # add a new group PriorityInsertGroup(Projects, group) return objs
def DefineGroup(name, src, depend, **parameters): global Env if not GetDepend(depend): return [] # find exist group and get path of group group_path = '' for g in Projects: if g['name'] == name: group_path = g['path'] if group_path == '': group_path = GetCurrentDir() group = parameters group['name'] = name group['path'] = group_path if type(src) == type([]): group['src'] = File(src) else: group['src'] = src if 'CCFLAGS' in group: Env.AppendUnique(CCFLAGS=group['CCFLAGS']) if 'CPPPATH' in group: paths = [] for item in group['CPPPATH']: paths.append(os.path.abspath(item)) group['CPPPATH'] = paths Env.AppendUnique(CPPPATH=group['CPPPATH']) if 'CPPDEFINES' in group: Env.AppendUnique(CPPDEFINES=group['CPPDEFINES']) if 'LINKFLAGS' in group: Env.AppendUnique(LINKFLAGS=group['LINKFLAGS']) if 'ASFLAGS' in group: Env.AppendUnique(ASFLAGS=group['ASFLAGS']) if 'LOCAL_CPPPATH' in group: paths = [] for item in group['LOCAL_CPPPATH']: paths.append(os.path.abspath(item)) group['LOCAL_CPPPATH'] = paths import rtconfig if rtconfig.PLATFORM == 'gcc': if 'CCFLAGS' in group: group['CCFLAGS'] = utils.GCCC99Patch(group['CCFLAGS']) if 'LOCAL_CCFLAGS' in group: group['LOCAL_CCFLAGS'] = utils.GCCC99Patch(group['LOCAL_CCFLAGS']) # check whether to clean up library if GetOption('cleanlib') and os.path.exists( os.path.join(group['path'], GroupLibFullName(name, Env))): if group['src'] != []: print('Remove library:' + GroupLibFullName(name, Env)) fn = os.path.join(group['path'], GroupLibFullName(name, Env)) if os.path.exists(fn): os.unlink(fn) if 'LIBS' in group: Env.AppendUnique(LIBS=group['LIBS']) if 'LIBPATH' in group: Env.AppendUnique(LIBPATH=group['LIBPATH']) # check whether to build group library if 'LIBRARY' in group: objs = Env.Library(name, group['src']) else: # only add source objs = group['src'] # merge group for g in Projects: if g['name'] == name: # merge to this group MergeGroup(g, group) return objs # add a new group Projects.append(group) return objs
def DefineGroup(name, src, depend, **parameters): global Env if not GetDepend(depend): return [] # find exist group and get path of group group_path = '' for g in Projects: if g['name'] == name: group_path = g['path'] if group_path == '': group_path = GetCurrentDir() group = parameters group['name'] = name group['path'] = group_path if type(src) == type([]): group['src'] = File(src) else: group['src'] = src if 'CCFLAGS' in group: Env.AppendUnique(CCFLAGS=group['CCFLAGS']) if 'CPPPATH' in group: paths = [] for item in group['CPPPATH']: paths.append(os.path.abspath(item)) group['CPPPATH'] = paths Env.AppendUnique(CPPPATH=group['CPPPATH']) if 'CPPDEFINES' in group: Env.AppendUnique(CPPDEFINES=group['CPPDEFINES']) if 'LINKFLAGS' in group: Env.AppendUnique(LINKFLAGS=group['LINKFLAGS']) if 'ASFLAGS' in group: Env.AppendUnique(ASFLAGS=group['ASFLAGS']) if 'LOCAL_CPPPATH' in group: paths = [] for item in group['LOCAL_CPPPATH']: paths.append(os.path.abspath(item)) group['LOCAL_CPPPATH'] = paths import osconfig if osconfig.PLATFORM == 'gcc': if 'CCFLAGS' in group: group['CCFLAGS'] = utils.GCCC99Patch(group['CCFLAGS']) if 'LOCAL_CCFLAGS' in group: group['LOCAL_CCFLAGS'] = utils.GCCC99Patch(group['LOCAL_CCFLAGS']) # only add source objs = group['src'] # merge group for g in Projects: if g['name'] == name: # merge to this group MergeGroup(g, group) return objs def PriorityInsertGroup(groups, group): length = len(groups) for i in range(0, length): if operator.gt(groups[i]['name'].lower(), group['name'].lower()): groups.insert(i, group) return groups.append(group) # add a new group PriorityInsertGroup(Projects, group) return objs