# Copyright (C) 2018 Intel Corporation. # SPDX-License-Identifier: BSD-3-Clause # This script takes a Kconfig and a defconfig file, and expands it to a .config # with all default values listed explicitly. import sys, os # Kconfiglib: Copyright (c) 2011-2018, Ulf Magnusson # SPDX-License-Identifier: ISC # Refer to scripts/kconfig/LICENSE.kconfiglib for the permission notice. import kconfiglib def usage(): sys.stdout.write("%s: \n" % sys.argv[0]) def main(): if len(sys.argv) < 3: usage() sys.exit(1) target_board = os.environ['BOARD'] kconfig_path = sys.argv[1] if not os.path.isfile(kconfig_path): sys.stderr.write("Cannot find file %s\n" % kconfig_path) sys.exit(1) kconfig = kconfiglib.Kconfig(kconfig_path) defconfig_path = kconfig.defconfig_filename if not defconfig_path or not os.path.isfile(defconfig_path): sys.stderr.write("No defconfig found for board %s.\n" % target_board) sys.exit(1) kconfig.load_config(defconfig_path) config_path = sys.argv[2] if os.path.isfile(config_path): # No need to change .config if it is already equivalent to the specified # default. kconfig_current = kconfiglib.Kconfig(kconfig_path) kconfig_current.load_config(config_path) same_config = True for sym in kconfig_current.syms: if kconfig_current.syms[sym].str_value != kconfig.syms[sym].str_value: same_config = False break if same_config: sys.exit(0) sys.stdout.write("Default configuration based on %s.\n" % defconfig_path) kconfig.write_config(config_path) sys.stdout.write("Configuration written to %s.\n" % config_path) if __name__ == "__main__": main()