def __init__(self): """Initialize the target The build_flags dictionnary is used to set attributes of runtime_build.gpr""" TargetConfiguration.__init__(self) ArchSupport.__init__(self) self.config_files = {} self.runtimes = {} self.rts_options = RTSProfiles(self) self.build_flags = { 'source_dirs': None, 'common_flags': [ '-fcallgraph-info=su,da', '-ffunction-sections', '-fdata-sections' ], 'asm_flags': [], 'c_flags': ['-DIN_RTS', '-Dinhibit_libc'] } readme = self.readme_file if readme: self.config_files.update({'README': readfile(readme)}) for profile in self.system_ads: # Set the scenario variable values for the base profile rts = FilesHolder() self.runtimes[profile] = rts if 'ravenscar' not in profile: rts.rts_vars = self.rts_options.zfp_scenarios(math_lib=False) elif 'full' in profile: rts.rts_vars = self.rts_options.full_scenarios(math_lib=True) else: rts.rts_vars = self.rts_options.sfp_scenarios(math_lib=False) # By default, system.ads files are searched for in # bb-runtimes/src/system. # This works fine in general, however, for custom runtimes, we may # need to change the location of this file for various reasons # so if we detect a slash in the base name, this means that we # lookup the file as any other regular source file. system_ads = self.system_ads[profile] if '/' in system_ads: rts.add_sources('arch', {'system.ads': system_ads}) else: rts.add_sources('arch', {'system.ads': 'src/system/%s' % system_ads}) rts.build_flags = copy.deepcopy(self.build_flags) rts.config_files = {} # Update the runtimes objects according to target specifications self.amend_rts(profile, rts) # Check that dependencies are met self.rts_options.check_deps(rts.rts_vars) assert len(self.runtimes) > 0, "No runtime defined"
def __init__(self): """Initialize the target The build_flags dictionnary is used to set attributes of runtime_build.gpr""" TargetConfiguration.__init__(self) ArchSupport.__init__(self) self.config_files = {} self.runtimes = {} self.rts_options = RTSProfiles(self) self.build_flags = { 'source_dirs': None, 'common_flags': [ '-fcallgraph-info=su,da', '-ffunction-sections', '-fdata-sections' ], 'asm_flags': [], 'c_flags': ['-DIN_RTS', '-Dinhibit_libc'] } readme = self.readme_file if readme: self.config_files.update({'README': readfile(readme)}) for profile in self.system_ads: # Set the scenario variable values for the base profile rts = FilesHolder() self.runtimes[profile] = rts if 'ravenscar' not in profile: rts.rts_vars = self.rts_options.zfp_scenarios(math_lib=False) elif 'full' in profile: rts.rts_vars = self.rts_options.full_scenarios(math_lib=True) else: rts.rts_vars = self.rts_options.sfp_scenarios(math_lib=False) rts.add_sources( 'arch', {'system.ads': 'src/system/%s' % self.system_ads[profile]}) rts.build_flags = copy.deepcopy(self.build_flags) rts.config_files = {} # Update the runtimes objects according to target specifications self.amend_rts(profile, rts) # Check that dependencies are met self.rts_options.check_deps(rts.rts_vars) assert len(self.runtimes) > 0, "No runtime defined"