blob: 23eedb497eaa7123dacdd3d512cd864435164646 [file] [log] [blame]
# Evaluates an expression (e.g. "X86_64 || (X86_32 && X86_LOCAL_APIC)") in the
# context of a configuration. Note that this always yields a tristate value (n,
# m, or y).
#
# Usage:
#
# $ make [ARCH=<arch>] scriptconfig SCRIPT=Kconfiglib/examples/eval_expr.py SCRIPT_ARG=<expr>
import sys
import kconfiglib
if len(sys.argv) < 3:
sys.exit("Pass the expression to evaluate with SCRIPT_ARG=<expression>")
kconf = kconfiglib.Kconfig(sys.argv[1])
expr = sys.argv[2]
# Enable modules so that m doesn't get demoted to n
kconf.modules.set_value(2)
print("the expression '{}' evaluates to {}"
.format(expr, kconf.eval_string(expr)))