1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
import SCons.Script
import os
def _find_argument(env, arg):
ret = SCons.Script.ARGUMENTS.get(arg, None)
if ret is None:
if arg in os.environ:
ret = os.environ[arg]
return ret
def _mark_known_argument(env, arg):
if '_KNOWN_ARGS' not in env.Dictionary():
env['_KNOWN_ARGS'] = set()
env['_KNOWN_ARGS'].add(arg)
def _is_known_argument(env, arg):
if '_KNOWN_ARGS' in env.Dictionary():
return arg in env['_KNOWN_ARGS']
return False
def HasArgument(env, arg):
return _is_known_argument(env, arg) or _find_argument(env, arg) is not None
def OverrideFromArgument(env, arg, names=[], default=None):
if not names:
names = [arg]
for name in names:
v = _find_argument(env, name)
if v is not None:
_mark_known_argument(env, arg)
else:
v = default
if v is not None:
env[arg] = v
break
def PrependFromArgument(env, arg, names=[], default=None):
if not names:
names = [arg]
for name in names:
v = _find_argument(env, name)
if v is not None:
_mark_known_argument(env, arg)
else:
v = default
if v is not None:
env.Prepend(**{arg: v})
break
def init(env):
env.AddMethod(HasArgument, 'HasArgument')
env.AddMethod(OverrideFromArgument, 'OverrideFromArgument')
env.AddMethod(PrependFromArgument, 'PrependFromArgument')
|