def start(self, node, env): debug('preproc: scanning %s (in %s)', node.name, node.parent.name) self.env = env bld = node.ctx try: self.parse_cache = bld.parse_cache except AttributeError: bld.parse_cache = {} self.parse_cache = bld.parse_cache self.addlines(node) # macros may be defined on the command-line, so they must be parsed as if they were part of the file if env['DEFINES']: lst = ['%s %s' % (x[0], Utils.trimquotes('='.join(x[1:]))) for x in [y.split('=') for y in env['DEFINES']]] self.lines = [('define', x) for x in lst] + self.lines while self.lines: (kind, line) = self.lines.pop(0) if kind == POPFILE: self.currentnode_stack.pop() continue try: self.process_line(kind, line) except Exception as e: if Logs.verbose: debug('preproc: line parsing failed (%s): %s %s', e, line, Utils.ex_stack())