def apply_lib_vars(self): debug('apply_lib_vars called', 'ccroot') # 0. override if necessary self.process_vnum() # 1. the case of the libs defined in the project names = self.uselib_local.split() env=self.env htbl = Params.g_build.m_depends_on for name in names: for obj in Object.g_allobjs: if obj.name != name: continue if not obj.m_posted: obj.post() if obj.m_type == 'shlib': env.append_value('LIB', obj.target) elif obj.m_type == 'plugin': if platform == 'darwin': env.append_value('PLUGIN', obj.target) else: env.append_value('LIB', obj.target) elif obj.m_type == 'staticlib': env.append_value('STATICLIB', obj.target) else: error('unknown object type %s in apply_lib_vars' % obj.name) # add the path too tmp_path = obj.path.bldpath(self.env) if not tmp_path in env['LIBPATH']: env.prepend_value('LIBPATH', tmp_path) # set the dependency over the link task self.m_linktask.m_run_after.append(obj.m_linktask) #break # make sure to rebuild our link task if obj.m_linktask is re-run try: lst = htbl[self.m_linktask.m_outputs[0]] for a in obj.m_linktask: if not a in lst: lst.append(a) except: htbl[self.m_linktask.m_outputs[0]] = obj.m_linktask.m_outputs # do not continue on all objects, we have found the interesting one break # 2. the case of the libs defined outside libs = self.uselib.split() for l in libs: for v in self.p_flag_vars: val=self.env[v+'_'+l] if val: self.env.append_value(v, val)