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