Building the Kconfig Visual Configuration

Overview

Kconfig Visual Configuration

Kconfig visual configuration is implemented on Kconfiglib and Kconfig. It allows customized configuration of OpenHarmony subsystem components.

Kconfig visual configuration has the following advantages:

  • Intuitive display of software component options
  • High reliability (Linux kernel and Buildroot use Kconfig for visualized configuration)

Basic Concepts

  • Kconfig: a visual configuration file format for Linux.

  • Kconfiglib: a visual configuration tool based on the Kconfig format for Linux.

Operation Guide

  1. Obtain the source code.

    For details, see Obtaining Source Code.

  2. Set up the environment.

    The Kconfiglib required for environment configuration has been embedded in the OpenHarmony hb tool. For details about how to install the hb tool, see hb Installation.

  3. Open the Kconfig configuration interface.

    # Go to the build repository directory.
    cd build/tools/component_tools
    menuconfig kconfig
    

    Kconfig example

  4. Set parameters.

    For details about the parameters, see productdefine/common/base/base_product.json.

    Setting parameters

  5. Select and configure the component.

    1. Press the arrow keys and select a subsystem. The component list of the subsystem is displayed.

    2. Press Enter to select a component.

    3. When setting feature, use commas (,) to separate multiple values.

      Selecting a component

  6. Save the settings.

    Press S to save the settings. You can set the name of the file to generate. By default, a file named .config file is generated in the current directory.

    Save settings

  7. Generate the OpenHarmony style configuration file.

    Example:

    1. Perform a full build.

      cp productdefine/common/base/base_product.json productdefine/common/products/ohos-arm64.json
      ./build.sh --product-name ohos-arm64  --build-only-gn --ccache --gn-args pycache_enable=true --gn-args check_deps=true --build-only-gn
      
    2. Generate dependency files for the component.

      ./build/tools/module_dependence/part_deps.py --deps-files-path out/arm64/deps_files
      # output: out/arm64/part_deps_info/part_deps_info.json
      
    3. Generate the OpenHarmony style configuration file.

      cd build/tools/component_tools
      python3 parse_kconf.py --deps=/path/to/out/arm64/part_deps_info/part_deps_info.json
      

      By default, the file product.json is generated in the current directory. You can also use python3 parse_kconf.py --out="example/out.json" to specify the file path.

      For more operations, run python3 parse_kconf.py -h.

FAQs

Latest Components Not Displayed in the Menu List

The component list productdefine/common/base/base_product.json is updated with product updates and iterations. The Kconfig menu does not contain the latest components.

Solution

Update the Kconfig file.

cd build/tools/component_tools
python3 generate_kconfig.py

You can run python3 generate_kconfig.py -h to view more options.