xref: /optee_os/scripts/kconfig/kconfiglib/allyesconfig.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 'y'.
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/allyesconfig.py
15*c689edbbSJens Wiklander"""
16*c689edbbSJens Wiklanderimport kconfiglib
17*c689edbbSJens Wiklander
18*c689edbbSJens Wiklander
19*c689edbbSJens Wiklanderdef main():
20*c689edbbSJens Wiklander    kconf = kconfiglib.standard_kconfig(__doc__)
21*c689edbbSJens Wiklander
22*c689edbbSJens Wiklander    # See allnoconfig.py
23*c689edbbSJens Wiklander    kconf.warn = False
24*c689edbbSJens Wiklander
25*c689edbbSJens Wiklander    # Try to set all symbols to 'y'. Dependencies might truncate the value down
26*c689edbbSJens Wiklander    # later, but this will at least give the highest possible value.
27*c689edbbSJens Wiklander    #
28*c689edbbSJens Wiklander    # Assigning 0/1/2 to non-bool/tristate symbols has no effect (int/hex
29*c689edbbSJens Wiklander    # symbols still take a string, because they preserve formatting).
30*c689edbbSJens Wiklander    for sym in kconf.unique_defined_syms:
31*c689edbbSJens Wiklander        # Set choice symbols to 'm'. This value will be ignored for choices in
32*c689edbbSJens Wiklander        # 'y' mode (the "normal" mode), which will instead just get their
33*c689edbbSJens Wiklander        # default selection, but will set all symbols in m-mode choices to 'm',
34*c689edbbSJens Wiklander        # which is as high as they can go.
35*c689edbbSJens Wiklander        #
36*c689edbbSJens Wiklander        # Here's a convoluted example of how you might get an m-mode choice
37*c689edbbSJens Wiklander        # even during allyesconfig:
38*c689edbbSJens Wiklander        #
39*c689edbbSJens Wiklander        #   choice
40*c689edbbSJens Wiklander        #           tristate "weird choice"
41*c689edbbSJens Wiklander        #           depends on m
42*c689edbbSJens Wiklander        sym.set_value(1 if sym.choice else 2)
43*c689edbbSJens Wiklander
44*c689edbbSJens Wiklander    # Set all choices to the highest possible mode
45*c689edbbSJens Wiklander    for choice in kconf.unique_choices:
46*c689edbbSJens Wiklander        choice.set_value(2)
47*c689edbbSJens Wiklander
48*c689edbbSJens Wiklander    kconf.warn = True
49*c689edbbSJens Wiklander
50*c689edbbSJens Wiklander    kconf.load_allconfig("allyes.config")
51*c689edbbSJens Wiklander
52*c689edbbSJens Wiklander    print(kconf.write_config())
53*c689edbbSJens Wiklander
54*c689edbbSJens Wiklander
55*c689edbbSJens Wiklanderif __name__ == "__main__":
56*c689edbbSJens Wiklander    main()
57