xref: /optee_os/scripts/kconfig/kconfiglib/allnoconfig.py (revision c689edbb2550c76ae81dcecab717d82a564b2d7b)
1*c689edbbSJens Wiklander#!/usr/bin/env python3
2*c689edbbSJens Wiklander
3*c689edbbSJens Wiklander# Copyright (c) 2018-2019, Ulf Magnusson
4*c689edbbSJens Wiklander# SPDX-License-Identifier: ISC
5*c689edbbSJens Wiklander
6*c689edbbSJens Wiklander"""
7*c689edbbSJens WiklanderWrites a configuration file where as many symbols as possible are set to 'n'.
8*c689edbbSJens Wiklander
9*c689edbbSJens WiklanderThe default output filename is '.config'. A different filename can be passed
10*c689edbbSJens Wiklanderin the KCONFIG_CONFIG environment variable.
11*c689edbbSJens Wiklander
12*c689edbbSJens WiklanderUsage for the Linux kernel:
13*c689edbbSJens Wiklander
14*c689edbbSJens Wiklander  $ make [ARCH=<arch>] scriptconfig SCRIPT=Kconfiglib/allnoconfig.py
15*c689edbbSJens Wiklander"""
16*c689edbbSJens Wiklander
17*c689edbbSJens Wiklander# See examples/allnoconfig_walk.py for another way to implement this script
18*c689edbbSJens Wiklander
19*c689edbbSJens Wiklanderimport kconfiglib
20*c689edbbSJens Wiklander
21*c689edbbSJens Wiklander
22*c689edbbSJens Wiklanderdef main():
23*c689edbbSJens Wiklander    kconf = kconfiglib.standard_kconfig(__doc__)
24*c689edbbSJens Wiklander
25*c689edbbSJens Wiklander    # Avoid warnings that would otherwise get printed by Kconfiglib for the
26*c689edbbSJens Wiklander    # following:
27*c689edbbSJens Wiklander    #
28*c689edbbSJens Wiklander    # 1. Assigning a value to a symbol without a prompt, which never has any
29*c689edbbSJens Wiklander    #    effect
30*c689edbbSJens Wiklander    #
31*c689edbbSJens Wiklander    # 2. Assigning values invalid for the type (only bool/tristate symbols
32*c689edbbSJens Wiklander    #    accept 0/1/2, for n/m/y). The assignments will be ignored for other
33*c689edbbSJens Wiklander    #    symbol types, which is what we want.
34*c689edbbSJens Wiklander    kconf.warn = False
35*c689edbbSJens Wiklander    for sym in kconf.unique_defined_syms:
36*c689edbbSJens Wiklander        sym.set_value(2 if sym.is_allnoconfig_y else 0)
37*c689edbbSJens Wiklander    kconf.warn = True
38*c689edbbSJens Wiklander
39*c689edbbSJens Wiklander    kconf.load_allconfig("allno.config")
40*c689edbbSJens Wiklander
41*c689edbbSJens Wiklander    print(kconf.write_config())
42*c689edbbSJens Wiklander
43*c689edbbSJens Wiklander
44*c689edbbSJens Wiklanderif __name__ == "__main__":
45*c689edbbSJens Wiklander    main()
46