def ref(var, target=None, context=None): if __refEval: if context != None: context = __refContexts[context] if target != None and target not in mk.targets: raise errors.Error("target '%s' cannot be used in ref() since it doesn't exist" % target, context=context) try: if target == None or var not in mk.targets[target].vars: return mk.vars[var] else: return mk.targets[target].vars[var] except KeyError: if target == None: raise errors.Error("undefined variable '%s'" % var, context=context) else: raise errors.Error("undefined variable '%s' on target '%s'" % (var, target), context=context) else: if mk.__trackUsage: mk.__usageTracker.refs += 1 if context == None: context = len(__refContexts) __refContexts[context] = errors.getCtx() if target == None: return "$(ref('%s',None,%i))" % (var, context) else: return "$(ref('%s','%s',%i))" % (var, target, context)
def _printWarning(e, text): #FIXME: DEPRECATED -- e can't be None, unless in <echo> text = 'warning: %s' % text if e != None: text = '%s: %s\n' % (e.location(), text) text += errors.getCtxLocationStr(errors.getCtx()) else: text += '\n' sys.stderr.write(text)
def handleOption(e): errors.pushCtx("when processing option '%s' at %s" % (e.name, e.location())) name = evalConstExpr(e, e.props['name']) if name in mk.options: raise ReaderError(e, "option '%s' already defined" % name) if name in mk.override_vars: return # user hardcoded the value with -D=xxx default = None force_default = False desc = None values = None values_desc = None category = mk.Option.CATEGORY_UNSPECIFICED for c in e.children: if c.name == 'default-value': default = c.value force_default = 'force' in c.props and c.props['force'] == '1' elif c.name == 'description': desc = c.value elif c.name == 'values': values = evalConstExpr(e, c.value.replace('\n', '')).split(',') for i in range(len(values)): values[i] = values[i].strip() elif c.name == 'values-description': values_desc = evalConstExpr(e, c.value).split(',') o = mk.Option(name, default, force_default, desc, values, values_desc, errors.getCtx()) mk.addOption(o) if 'never_empty' in e.props and e.props['never_empty'] == '1': o.neverEmpty = 1 if 'category' in e.props: category = evalConstExpr(e, e.props['category']) if category == mk.Option.CATEGORY_PATH: o.category = category o.neverEmpty = 1 def __pathOptionCallb(var, func, caller): if caller == 'nativePaths': return '$(%s)' % var else: return None utils.addSubstituteCallback(o.name, __pathOptionCallb) else: raise ReaderError(e, "unknown category '%s'" % category) errors.popCtx()
def handleOption(e): errors.pushCtx("when processing option '%s' at %s" % (e.name, e.location())) name = evalConstExpr(e, e.props['name']) if name in mk.options: raise ReaderError(e, "option '%s' already defined" % name) if name in mk.override_vars: return # user hardcoded the value with -D=xxx default = None force_default = False desc = None values = None values_desc = None category = mk.Option.CATEGORY_UNSPECIFICED for c in e.children: if c.name == 'default-value': default = c.value force_default = 'force' in c.props and c.props['force'] == '1' elif c.name == 'description': desc = c.value elif c.name == 'values': values = evalConstExpr(e, c.value.replace('\n','')).split(',') for i in range(len(values)): values[i] = values[i].strip() elif c.name == 'values-description': values_desc = evalConstExpr(e, c.value).split(',') o = mk.Option(name, default, force_default, desc, values, values_desc, errors.getCtx()) mk.addOption(o) if 'never_empty' in e.props and e.props['never_empty'] == '1': o.neverEmpty = 1 if 'category' in e.props: category = evalConstExpr(e, e.props['category']) if category == mk.Option.CATEGORY_PATH: o.category = category o.neverEmpty = 1 def __pathOptionCallb(var, func, caller): if caller == 'nativePaths': return '$(%s)' % var else: return None utils.addSubstituteCallback(o.name, __pathOptionCallb) else: raise ReaderError(e, "unknown category '%s'" % category) errors.popCtx()