summaryrefslogtreecommitdiff
path: root/examples/eval_expr.py
blob: 260edbe84b014a6bf8ce5a80016f4fbd4db5a7b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 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 kconfiglib
import sys

if len(sys.argv) < 3:
    print('Pass symbol name (without "CONFIG_" prefix) with SCRIPT_ARG=NAME')
    sys.exit(1)

conf = kconfiglib.Kconfig(sys.argv[1])

# Enable modules so that m doesn't get demoted to n
conf.syms["MODULES"].set_value(2)

print("the expression '{}' evaluates to {}"
      .format(sys.argv[2], conf.eval_string(sys.argv[2])))